- 浏览: 34395 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
xushans:
线上申请地址: http://wenku.bai ...
android上执行UI交互的junit方法 -
xushans:
<iframe width="604" ...
android上执行UI交互的junit方法 -
conglianying:
...
js的prototype原型设计模式
android-async-http是处理http处理的开源网络框架。
地址如下:
https://github.com/loopj/android-async-http
选择android-async-http库来处理android网络通信处理,完全是因为呼声够高。期间在研究该库soap通信时,发现了关于该库做soap通信时的讨论帖,在网上资料很少的情况下,看到这个讨论也算是很好的教材。
https://github.com/loopj/android-async-http/issues/403
下来开始本地测试。
1.在本地搭建WebService服务,搭建方法:http://xushans.iteye.com/blog/2218801
WebService具体功能类:
2.打包启动后,生成的wsdl:
3.使用SoapUI生成soap request:
http://xushans.iteye.com/blog/2220718
4.利用android-async-http编写代码:
其中,在xmlRequest中,设置需要调用webService的方法sayHello的参数liu。创建异步通信对象AsyncHttpClient时,设置header属性Content-Type为text/xml;charset=utf-8,设置header属性SOAPAction为http://test.com/:sayHello(http://test.com是命名空间,sayHello是方法名)。设置AsyncHttpClient.post方法的url参数为webService的wsdl的url。设置response控制类为异步类AsyncHttpResponseHandler。
测试结果,收到soap response:
地址如下:
https://github.com/loopj/android-async-http
选择android-async-http库来处理android网络通信处理,完全是因为呼声够高。期间在研究该库soap通信时,发现了关于该库做soap通信时的讨论帖,在网上资料很少的情况下,看到这个讨论也算是很好的教材。
https://github.com/loopj/android-async-http/issues/403
下来开始本地测试。
1.在本地搭建WebService服务,搭建方法:http://xushans.iteye.com/blog/2218801
WebService具体功能类:
package com.test; public class Axis2WB { /** * 提供了一个说Hello的服务 * * @return */ public String sayHello( String name ) { return "Hello " + name; } /** * 提供了一个做加法的服务 * * @param a * @param b * @return */ public int add( int a, int b ) { return a + b; } }
2.打包启动后,生成的wsdl:
This XML file does not appear to have any style information associated with it. The document tree is shown below. <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://test.com" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://test.com"> <wsdl:documentation>Axis2WB</wsdl:documentation> <wsdl:types> <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://test.com"> <xs:element name="add"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="a" type="xs:int"/> <xs:element minOccurs="0" name="b" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="addResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="return" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="sayHello"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="name" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="sayHelloResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types> <wsdl:message name="addRequest"> <wsdl:part name="parameters" element="ns:add"/> </wsdl:message> <wsdl:message name="addResponse"> <wsdl:part name="parameters" element="ns:addResponse"/> </wsdl:message> <wsdl:message name="sayHelloRequest"> <wsdl:part name="parameters" element="ns:sayHello"/> </wsdl:message> <wsdl:message name="sayHelloResponse"> <wsdl:part name="parameters" element="ns:sayHelloResponse"/> </wsdl:message> <wsdl:portType name="Axis2WBPortType"> <wsdl:operation name="add"> <wsdl:input message="ns:addRequest" wsaw:Action="urn:add"/> <wsdl:output message="ns:addResponse" wsaw:Action="urn:addResponse"/> </wsdl:operation> <wsdl:operation name="sayHello"> <wsdl:input message="ns:sayHelloRequest" wsaw:Action="urn:sayHello"/> <wsdl:output message="ns:sayHelloResponse" wsaw:Action="urn:sayHelloResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="Axis2WBSoap11Binding" type="ns:Axis2WBPortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="add"> <soap:operation soapAction="urn:add" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="sayHello"> <soap:operation soapAction="urn:sayHello" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="Axis2WBSoap12Binding" type="ns:Axis2WBPortType"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="add"> <soap12:operation soapAction="urn:add" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="sayHello"> <soap12:operation soapAction="urn:sayHello" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="Axis2WBHttpBinding" type="ns:Axis2WBPortType"> <http:binding verb="POST"/> <wsdl:operation name="add"> <http:operation location="add"/> <wsdl:input> <mime:content type="application/xml" part="parameters"/> </wsdl:input> <wsdl:output> <mime:content type="application/xml" part="parameters"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="sayHello"> <http:operation location="sayHello"/> <wsdl:input> <mime:content type="application/xml" part="parameters"/> </wsdl:input> <wsdl:output> <mime:content type="application/xml" part="parameters"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="Axis2WB"> <wsdl:port name="Axis2WBHttpSoap11Endpoint" binding="ns:Axis2WBSoap11Binding"> <soap:address location="http://localhost:8080/axis2/services/Axis2WB.Axis2WBHttpSoap11Endpoint/"/> </wsdl:port> <wsdl:port name="Axis2WBHttpSoap12Endpoint" binding="ns:Axis2WBSoap12Binding"> <soap12:address location="http://localhost:8080/axis2/services/Axis2WB.Axis2WBHttpSoap12Endpoint/"/> </wsdl:port> <wsdl:port name="Axis2WBHttpEndpoint" binding="ns:Axis2WBHttpBinding"> <http:address location="http://localhost:8080/axis2/services/Axis2WB.Axis2WBHttpEndpoint/"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
3.使用SoapUI生成soap request:
http://xushans.iteye.com/blog/2220718
4.利用android-async-http编写代码:
String xmlRequest = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:test=\"http://test.com\">" + "<soapenv:Header/>" + "<soapenv:Body>" + "<test:sayHello>" + "<test:name>liu</test:name>" + "</test:sayHello>" + "</soapenv:Body>" + "</soapenv:Envelope>"; String contentType = "text/xml;charset=utf-8"; StringEntity entity = null; try { entity = new StringEntity( xmlRequest, "UTF-8" ); } catch ( UnsupportedEncodingException e ) { // TODO Auto-generated catch block e.printStackTrace(); } entity.setContentType( contentType ); entity.setContentEncoding( new BasicHeader( HTTP.CONTENT_ENCODING, contentType ) ); AsyncHttpClient client = new AsyncHttpClient(); client.addHeader( "Content-Type", contentType ); client.addHeader( "SOAPAction", "http://test.com/:sayHello" ); client.post( context, "http://xxx.xxx.xxx.xxx:8080/axis2/services/Axis2WB?wsdl", entity, contentType, new AsyncHttpResponseHandler() { @Override public void onFailure( int arg0, Header[] arg1, byte[] arg2, Throwable arg3 ) { // TODO Auto-generated method stub String result = arg2.toString(); System.out.println( result ); } @Override public void onSuccess( int arg0, Header[] arg1, byte[] arg2 ) { // TODO Auto-generated method stub String result = new String( arg2 ); System.out.println( result ); } } );
其中,在xmlRequest中,设置需要调用webService的方法sayHello的参数liu。创建异步通信对象AsyncHttpClient时,设置header属性Content-Type为text/xml;charset=utf-8,设置header属性SOAPAction为http://test.com/:sayHello(http://test.com是命名空间,sayHello是方法名)。设置AsyncHttpClient.post方法的url参数为webService的wsdl的url。设置response控制类为异步类AsyncHttpResponseHandler。
测试结果,收到soap response:
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns:sayHelloResponse xmlns:ns="http://test.com"><ns:return>Hello liu</ns:return></ns:sayHelloResponse></soapenv:Body></soapenv:Envelope>
发表评论
-
Restful API的设计与实践
2015-12-09 11:58 691本文转自简书 Restful这 ... -
tcpdump监听android网络通信
2015-08-19 20:39 6941.下载tcpdump并导入android虚拟机目录(例:/d ... -
android读取plist文件
2015-06-30 14:09 3775ios的配置文件是写在.plist里。 那么,如何从andro ... -
根据wsdl生成soap请求格式
2015-06-18 19:32 6443根据wsdl文件如何生成soap请求的格式呢? 使用最方便的工 ... -
Permission denied (maybe missing INTERNET permission)
2015-06-16 14:41 739这是android无法进行socket访问。 修改配置如下即可 ... -
eclipse搭建web service
2015-06-11 13:47 721Apache Axis2是下一代 Apache Axis,是A ... -
android上执行UI交互的junit方法
2015-05-21 11:41 679android上执行UI交互的junit方法 可以使用Inst ... -
访问sqlite
2015-04-04 15:44 592android: ——注意要启动虚拟机或者连接真机才能调试 ... -
android和ios button点击变暗效果
2015-03-24 20:35 1333button点击时,需要变暗效果。 ios: 只需要chec ...
相关推荐
android-raelib-http 基于android-async-http的一个http异步请求库,并且使用了ksoap2库 用于进行Http异步请求和webservice soap post 请求
网络请求库android-async-http 图片异步加载库universal-image-loader Sqlite数据库操作ormlite-android 社会化分享ShareSDK+短信验证码 Zxing二维码库 百度地图定位SDK 谷歌依赖注入库RoboGuice WebService调用库...
网络请求库android-async-http 图片异步加载库universal-image-loader Sqlite数据库操作ormlite-android 社会化分享ShareSDK+短信验证码 Zxing二维码库 百度地图定位SDK 谷歌依赖注入库RoboGuice WebService调用库...
通过Mono for Android,开发者可以使用C#的HttpClient类进行网络通信,发送GET、POST请求,处理响应数据。这部分可能包括了异步任务(Task)和async/await关键字的使用,以实现非阻塞的网络操作。同时,还可能涉及...
网络请求库android-async-http 图片异步加载库universal-image-loader Sqlite数据库操作ormlite-android 社会化分享ShareSDK 短信验证码 Zxing二维码库 百度地图定位SDK 谷歌依赖注入库RoboGuice WebService...
5. **Android Async HTTP Library**: 提供异步HTTP请求,适合处理Web服务调用,避免阻塞UI线程。 在实际开发中,我们还需要关注以下几点: - **网络权限**:确保AndroidManifest.xml中添加了Internet权限,`<uses-...
3. 使用ksoap2调用Web服务:创建SoapObject、SoapSerializationEnvelope对象,设置请求和响应的相关参数,然后通过HttpTransportSE发送请求。 ```kotlin val soapObject = SoapObject(namespace, methodName) // ...
网络请求库android-async-http 图片异步加载库universal-image-loader Sqlite数据库操作ormlite-android 社会化分享ShareSDK 短信验证码 Zxing二维码库 百度地图定位SDK 谷歌依赖注入库RoboGuice WebService...
在Android应用中,开发者通常通过HTTP/HTTPS请求调用Web服务接口,获取或发送数据。 4. **UPnP(Universal Plug and Play)**:UPnP是一种网络协议,旨在使设备能够自动发现并连接到网络,无需手动配置。在Android...
LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...
总结,通过对OkHttp进行封装,我们可以构建一个简洁、高效的网络请求库,支持链式调用,同时利用拦截器和异步请求,实现更加灵活的网络操作。在实践中,这种封装方式能帮助开发者更好地管理和控制网络请求,降低出错...
- **异步编程**:为了保证高并发性和响应性,服务器通常采用异步编程模型,利用C#的async/await关键字处理IO密集型任务。 在"opcuaServer"这个源码包中,我们可以看到服务器的结构设计、节点管理、安全配置、订阅...
C#的异步编程模型(async/await)可以帮助开发者编写出高性能的多线程代码。 6. Web服务和API:CRM系统往往需要与其他系统集成,如ERP或电子商务平台。C#可以创建SOAP或RESTful Web服务,实现数据交换和功能调用。 ...
4. **异步编程**:C# 引入了 `async` 和 `await` 关键字,使得编写异步代码变得简单。这在处理长时间运行的操作时特别有用,如网络请求或文件读写,避免阻塞主线程。 5. **AOP(面向切面编程)**:C# 中可以通过 `...