Android基于SOAP协议向WebService交互数据修改请求超

/***/〃需要调用的方法名\ngetSupportProvince\M;*@return省份列表allProvince=newArrayList();SoapObject对象〃6.解析返回的数据intcount=count;i++))catch}SOAP:简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于XML的协议。谛力泰克网:app定制http://www.dilitech.com通过第三方提供的架包ksoap2-android-assembly-2.4-jar-with-dependencies.jar,我们可以向服务器进行请求调用自己需要的服务。下面以http://www.webxml.com.cn/fl供的天气预报web服务为例。下面是向远处服务器进行请求的详细操作类WebServiceUtilpublicclassWebServiceUtil{〃命名空间privatestaticfinalStringNAMESPACE=\"http://WebXml.com.cnAH;//WebService地址privatestaticfinalStringURL=\uhttp://webservice.webxml.com.cnAVebServices/WeatherWebService.asmx?wsdl\M;privatestaticfinalStringgetSupportProvince=*@desc获得洲、国内外省份和城市信息publicListgetAllProvince(){Listtry{〃1.实例化SoapObjectrequest=newSoapObject(NAMESPACE,getSupportProvince);〃2.如果方法需要参数,设置参数//rcqucst.sctPropcrty(\n参数名称\“,\”参数值\“);〃3.设置Soap的请求信息,参数部分为Soap协议的版本号SoapSerializationEnvelopeenvelope=newSoapSerializationEnvelope(SoapEnvelope.VER11);envelope.bodyOut=request;//4.构建传输对象AndroidHttpTransporttransport=newAndroidHttpTransport(URL);transport.dcbug=true;〃5.访问WcbScrvicc,第一个参数为命名空间+方法名,第二个参数为Envelope对象transport.call(NAMESPACE+getSupportProvince,envelope);SoapObjectresult=(SoapObject)envelope.getResponse();result.getPropertyCount();for(inti=0;i{allProvince.add(result.getProperty(i).toString());}catch(IOExceptione){e.printStackTrace();(XmlPullParserExceptione){e.printStackTrace();returndiProvince;)}使用述是比较简单的,在这我只以天气预报服务中提供的获取省份信息的方法getSupportProvince为例,详细的解特了基于soap协议的访问操作。在访问远程服务器提供的服务时,有时会因为网络问题或者是服务器端问题,而导致客八端侧一直处于请求连接状态,此时我们希望町以控制请求得不到响应的超时时间TimeOut.想要控制请求的超时时间,我们需要根据ksoap2-android-assembly-2.4-jar-with-dependencies.jar包,修改一些访问的控制类。1.首先重写架包屮的ServiceConnectionSE.java,添加设置超时时间的方法,可以在你的T程里重写这个类packagecom.ahutzh.weather;importjava.io.IOExccption;importjava.io.InputStrcain;importjava.io.OutputStream;importjava.net.HttpURLConncction;importjava.net.URL;importorg.ksoap2.transport.ServiceConnection;publicclassServiceConnectionSEimplementsServiceConnection{privateHttpURLConnectionconnection;publicServiceConnectionSE(Stringurl)throwsIOException{this.connection=((HttpURLConnection)newURL(url).openConnection());this.connection.sctUscCachcs(falsc);this.connection.sctDoOutput(truc);this.connection.setDoInput(true);)publicvoidconnect()throwsIOException{this.connection.connect();}publicvoiddisconnect(){this.connection.disconnect();}publicvoidsetRequestProperty(Stringstring,StringsoapAction){this.connection.setRequestProperty(string,soapAction);}publicvoidsetRequestMethod(StringrequestMethod)throwsIOException{this.connection.setRequestMethod(requestMethod);}publicOutputStreamopenOutputStream()throwsIOException{returnthis.connection.getOutputStream();}publicInputStreamopenInputStream()throwsIOException{returnthis.connection.getInputStream();}publicInputStreamgetErrorStream(){returnthis.connection.getErrorStream();}〃设置连接服务器的超吋吋间,毫秒级,此为自己添加的方法publicvoidsetConnectionTimeOut(inttimeout){this.connection.setConnectTimeout(timeout);}}再自己写一个传输对象类,类似于架包屮的AndroidHttpTransport类,命名为MyAndroidHttpTransport.javapackagecom.ahutzh.weather;importjava.io.IOException;importorg.ksoap2.transport.HttpTransportSE;importorg.ksoap2.transport.ScrviccConncction;publicckissMyAndroidHttpTransportextendsHttpTransportSE{privateinttimeout=30000;〃默认超时时间为30spublicMyAndroidHttpTransport(Stringurl){super(url);}publicMyAndroidHttpTransport(Stringurl,inttimeout){super(url);this.timeout=timeout;)protectedScrviccConncctiongctScrviccConncction(Stringurl)throwsIOException{ServiceConnectionSEServiceConnection=newServiceConnectionSE(url);sendceConnection.setConnectionTimeOut(timeout);returnnewServiceConnectionSE(url);))完成这之后,在前面的第四步构建传输对象小,就不要使用架包中的AndroidHttpTransport,而使用我们自己的写的这个类。//4.构建传输对象//AndroidHttpTransporttransport=newAndroidHttpTransport(URL);//transport.debug=true;inttimeout=15000;//settimeout15sMyAndroidHttpTransporttransport=newMyAndroidHttpTransport(URL,imeout);transport.debug=rue;文章出处:诫力泰克网app开发http://www.dilitech.com

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?