您的位置:首页 > 编程语言 > Java开发

Java调用WebService接口

2013-12-19 14:47 274 查看

接口定义:

public interface SendSMSHandler {

public void handleMessage(String text);

}


实现类:

package com.jjh.core.msg.sms.impl;

import java.io.IOException;
import java.rmi.RemoteException;
import java.util.HashMap;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import javax.xml.rpc.encoding.XMLType;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

import com.jjh.security.CommonEncrypt;
import com.jjh.core.msg.sms.SendSMSHandler;
import com.jjh.util.Constrants;

@org.springframework.stereotype.Service
public class SendSMSHandlerImpl implements SendSMSHandler {

private static String smsURL = "http://sms.xxx.com/SMSService.asmx";
private static String soapAction = "http://www.xxx.com/";
private static ObjectMapper mapper = new ObjectMapper();

@SuppressWarnings("unchecked")
public void handleMessage(String text) {

org.apache.axis.client.Service service = new Service();
try {
HashMap<String, Object> messagecontent=(HashMap<String, Object>)mapper.readValue(text, HashMap.class);
String msgcontent=(String)messagecontent.get(Constrants.MSGCONT);
HashMap<String, Object> map=(HashMap<String, Object>)CommonEncrypt.decryptSerializeObject(msgcontent);

Call call = (Call)service.createCall();
call.setTargetEndpointAddress(smsURL);
call.setOperationName(new QName(soapAction, "SendSms"));
call.addParameter(new QName(soapAction, "mobile"), XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter(new QName(soapAction, "text"), XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter(new QName(soapAction, "username"), XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter(new QName(soapAction, "password"), XMLType.XSD_STRING, ParameterMode.IN);

call.setReturnType(new QName(soapAction, "SendSmsResponse"), Integer.class);

call.setUseSOAPAction(true);
call.setSOAPActionURI(soapAction + "SendSms");

Integer v = (Integer)call.invoke(new Object[]{map.get("mobile"), map.get("text"), map.get("username"), map.get("password")});
System.out.println(v);

} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static void main(String[] args){
SendSMSHandler sms = new SendSMSHandlerImpl();
HashMap<String, Object> info = new HashMap<String, Object>();
info.put("mobile", "15800001111");
info.put("text", "Hello World!");
info.put("username", "xxx");
info.put("password", "xxxzzz");

String content = "";
try {
content = GlodonEncrypt.encryptSerializeObject(info);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
HashMap<String, Object> msg = new HashMap<String, Object>();
msg.put(Constrants.MSGTYPE, Constrants.MESSAGE_TYPE[1]);
msg.put(Constrants.MSGCONT, content);

String message = "";
try {
message=mapper.writeValueAsString(msg);
} catch (JsonGenerationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JsonMappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sms.handleMessage(message);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: