我们开发大部分的网络请求都是http来完成的,所以可能有人没有用过WebService,特此写一篇来加深印象并希望可以供大家参考
首先我们需要用到ksoap2的jar包我用的版本是ksoap2-android-assembly-3.5.0-jar-with-dependencies.jar,网上很容易搜到所以我就不贴了,有需要的可以留言。
好了废话不多说了直接上代码
//wsdl 的uri
String WSDL_URI = "http://59.193.42.12:7001/pems/serviceswebservice/IMobileinforeportSync";
//namespace
String namespace = "http://xfire.util.ems.csc.gov";
//要调用的方法名称
String methodName = "showDataInfo";
SoapObject request = new SoapObject(namespace, methodName);
// 设置需调用WebService接口需要传入的参数
request.addProperty("in0", phoneSec);
//创建SoapSerializationEnvelope 对象,同时指定soap版本号(之前在wsdl中看到的)
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapSerializationEnvelope.VER11);
//由于是发送请求,所以是设置bodyOut
envelope.bodyOut = request;
//由于是.net开发的webservice,所以这里要设置为true
envelope.dotNet = true;
HttpTransportSE httpTransportSE = new HttpTransportSE(WSDL_URI);
//调用
httpTransportSE.call(null, envelope);
// 获取返回的数据
SoapObject object = (SoapObject) envelope.bodyIn;
// 获取返回的结果
result = object.getProperty(0).toString();
其中注意前三个常量就可以了,一般情况下后台会给你一个地址,当在浏览器中访问时就会找到这三个常量的值。
wsdl 的uri通常是将WSDL地址末尾的"?wsdl"去除后剩余的部分
等有机会我在上图先从网上找了份代码大家可以参考下
<?xml version="1.0" encoding="utf-8" ?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:tns="http://WebXml.com.cn/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
targetNamespace="http://WebXml.com.cn/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<a href="http://www.webxml.com.cn/" mce_href="http://www.webxml.com.cn/" target="_blank">WebXml.com.cn</a>
<strong>国内手机号码归属地查询WEB服务</strong>,提供最新的国内手机号码段归属地数据,每月更新。<br />
使用本站 WEB 服务请注明或链接本站:<a href="http://www.webxml.com.cn/" mce_href="http://www.webxml.com.cn/" target="_blank">http://www.webxml.com.cn/
</a>感谢大家的支持!<br />
</wsdl:documentation>
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://WebXml.com.cn/">
<s:element name="getMobileCodeInfo">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="mobileCode" type="s:string" />
<s:element minOccurs="0" maxOccurs="1" name="userID" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="getMobileCodeInfoResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="getMobileCodeInfoResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
... ...
</s:schema>
</wsdl:types>
... ...
</wsdl:definitions>
1)从第08行可以看出,该WebSerivce所基于的SOAP协议版本是SOAP1.2;
2)从第10行可以看出,该WebSerivce的命名空间(NameSpace)是http://WebXml.com.cn/;
3)从第20行可以看出,我们查询手机号码归属地时要调用的方法名称为:getMobileCodeInfo;
4)从第23-24行可以看出,我们调用getMobileCodeInfo方法时需要传入两个参数:mobileCode和userId;
5)从第31行可以看出,调用getMobileCodeInfo方法后,将返回一个名为getMobileCodeInfoResult的结果字符串。
好了很简单吧,加油