日期:2014-05-17  浏览次数:20858 次

java程序如何调用webservice接口,实现发送短信功能

        最近有一个任务,即调用第三方的 webService 接口,实现发送短信功能.

        现在第三方只给了我一个 wsdl 描述文件,里面有各种操作接口,我想在我的方法中调用一下webservice接口,发送短

信,但是我不知道怎么写啊。我只有一个这个地址

    http://134.224.102.6:80/CompanySendSmInf/services/SmsInf?wsdl

    和一些接口中方法的说明,但是我怎么操作啊,请明白人指点下.

    另外我按照网上的一些方法,连接上面的地址时,报连接超时异常:

    
    AxisFault
    faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
    faultSubcode: 
    faultString: java.net.ConnectException: Connection timed out: connect
    faultActor: 
    faultNode: 
    faultDetail: 
    {http://xml.apache.org/axis/}stackTrace: java.net.ConnectException: Connection timed out: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)


    第三方提供了用户名和密码,但不知道怎样设置使用,请高人指点下操作流程: 即怎样利用这个连接地址及所给的 wsdl 描

述文件,来调用相关的接口,实现发送短信功能.


    

------解决方案--------------------
http://134.224.102.6:80/CompanySendSmInf/services/SmsInf?wsdl
这是个内网地址吧,WEBSERVICE 还要用户名密码 我还真不知道。
你有了wsdl文件 直接就可以用ECLIPSE 生成客户端的

我建议你还是先在 你的浏览器上访问 http://134.224.102.6:80/CompanySendSmInf/services 看他的WEBSERVICE
到底开着没
------解决方案--------------------
给你一个最简单的方法:
第一、根据http://134.224.102.6:80/CompanySendSmInf/services/SmsInf?wsdl 拿到WSDL文件。
第二、根据Axis的jar包,把WSDL文件生成客服端java代码。(可以把java文件打成jar文件,便于管理。怎么生成java代码,百度里都有说明我就不写了。)
第三、在你工程里用AXIS的功能属性,调用外部接口;给你一个格式模板:
      MobileCodeWSLocator l=new MobileCodeWSLocator();//MobileCodeWSLocator是WSDL文件生成客服端java类;
     MobileCodeWSSoap s=l.getMobileCodeWSSoap();();//MobileCodeWSSoap 是WSDL文件生成客服端java类

     String m=s.getMobileCodeInfo("13811534742", "");
     如果你用Axis生成的java类,格式和上面一样;自己参考一下就懂了。

你上面明显的连接异常,第三方服务明显没有开,WEBSERVICE可以设置户名、密码,像我们行所有的WEBSERVICE都设置,安全考虑吧。还有不懂的可以call我。




------解决方案--------------------
 protected org.apache.axis.client.Call createCall() throws java.rmi.RemoteException {
        try {
            org.apache.axis.client.Call _call = super._createCall();
            if (super.maintainSessionSet) {
                _call.setMaintainSession(super.maintainSession