webservice调用

一、postman测试web service 参考 https://www.cnblogs.com/fighter007/p/9154601.html

二、java调用webservice 

1、接口地址 http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx,方法 getMobileCodeInfo 

2、通过浏览器王文接口地址,点进具体的方法可以看到 很详细的 方法说明

3、直接上代码

import java.rmi.RemoteException;

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

import org.apache.axis.client.Call;
import org.apache.axis.client.Service
import org.apache.axis.encoding.XMLType;

public class FRReportTest2 {

    public static void main(String[] args) {
        callWebserviceASMX();
    }
    
   /**调用webservice.asmx接口
   * 
   * @param method 需要调用的方法
   * @param json   传递的参数
   */
  public static void callWebserviceASMX(){
    //获取webservice接口地址
    String url = "http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx";
  
    //域名地址,域名和方法名在server端SOAPAction 中定义的,该配置可以浏览器查看:http://服务器:端口/项目名/接口名(.asmx)
    String soapaction = "http://WebXml.com.cn/";
   
    Service service = new Service();
    try {
      Call call = (Call) service.createCall();
      call.setTargetEndpointAddress(url);
      //设置要调用的方法
      call.setOperationName(new QName(soapaction,"getMobileCodeInfo"));
     //设置要传递的参数
      call.addParameter(new QName(soapaction,"mobileCode"),
          XMLType.XSD_STRING,
          ParameterMode.IN);
      call.addParameter(new QName(soapaction,"userID"),
          XMLType.XSD_STRING,
          ParameterMode.IN);
      //设置要返回的数据类型,标准类型
      call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
     
      call.setUseSOAPAction(true);
     //不添加setSOAPActionURI 会报错:服务器未能识别 HTTP 头 SOAPAction 的值
      call.setSOAPActionURI(soapaction+"getMobileCodeInfo");
      //调用方法并传递参数
      String result = (String) call.invoke(new Object[]{"15210258675",""});
      System.out.println("result is:::"+result);
    } catch (ServiceException e) {
      e.printStackTrace();
    } catch (RemoteException e) {
      e.printStackTrace();
    }
  }

}

4、所需jar包,maven配置

<!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.axis/axis-jaxrpc -->
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis-jaxrpc</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/axis/axis-wsdl4j -->
        <dependency>
            <groupId>axis</groupId>
            <artifactId>axis-wsdl4j</artifactId>
            <version>1.5.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
        <dependency>
            <groupId>commons-discovery</groupId>
            <artifactId>commons-discovery</artifactId>
            <version>0.5</version>
        </dependency>

<!-- https://mvnrepository.com/artifact/javax.xml.soap/javax.xml.soap-api -->
<dependency>
    <groupId>javax.xml.soap</groupId>
    <artifactId>javax.xml.soap-api</artifactId>
    <version>1.4.0</version>
</dependency>

5、注意事项

执行过程汇报错:org.apache.axis.ConfigurationException - Exception: 
org.apache.axis.ConfigurationException: No service named http://WebXml.com.cn/ is available

这个可以忽略,或者把log级别调为info级别。

6、返回多个结果的情况

返回多个结果情况下,call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);  会报错:org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
此时可以设置返回结果为XMLType.SOAP_VECTOR,或者XMLType.XSD_SCHEMA,然后解析数据

三、扩散个开放的webservice 查询服务

http://www.webxml.com.cn/zh_cn/index.aspx

四、 Soap1.1和soap1.2 的区别
 相同点:
请求发送方式相同:都是使用POST
协议内容相同:都有Envelope和Body标签
 不同点:
数据格式不同:content-type不同
SOAP1.1:text/xml;charset=utf-8
SOAP1.2:application/soap+xml;charset=utf-8
 命名空间不同:
SOAP1.1:http://schemas.xmlsoap.org/soap/envelope
SOAP1.2:http://www.w3.org/2003/05/soap-envelope
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值