Java调用WebService接口

来源:互联网 发布:spark数据分析 编辑:程序博客网 时间:2024/05/22 15:51

接口定义:

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.Servicepublic 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);    }}


0 0