Java调用WebService接口

接口定义:

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值