关于android客户端使用ksoap2调用wcf(.svc)的总结
2012-08-31 12:24
489 查看
最近需要做一个android的项目调用.net的wcf,第一次做,花了好久,现在总结一下途中的许多问题,供大家参考,避免遇到同样的问题。
1.首先是遇到的问题是android虚拟机无法上网。
这个问题我弄了一天,不管怎么调就是不上网,一直瞎调试···后来打开浏览器发现网页也打不开,查了一下发现dns配置和自己的电脑的不一样的原因。
在cmd-adb shell-setprop net.dns1 自己电脑的dns(详见上一篇转载)。
当然,这个不能忘了哈
2.实际连接的代码不多说了,网上有的是,我直接上代码了,这里面就是.svc和.asmx的区别了,注释的是.asmx的soaaction是命名空间+方法名,.svc的soapaction是命名空间+契约名(这个我不是很懂,不知道叫法有没有问题,欢迎指出错误)+方法名。其实很早就实现了连接.asmx后缀的,但是就是实现不了连接.svc的
3,这是核心问题了,纠结了好几天的问题,报错unterminated entity ref (position:TEXT
这个问题在连接.asmx完全不存在,但是连接.svc就是怎么也找不到,然后找了一下国外的论坛终于发现,原来,是ksoap2版本的问题,我用的是最新的2.6.5,但是不知是2.6.5一个bug还是其他什么原因,需要换成2.5.7的,坑爹啊````
1.首先是遇到的问题是android虚拟机无法上网。
这个问题我弄了一天,不管怎么调就是不上网,一直瞎调试···后来打开浏览器发现网页也打不开,查了一下发现dns配置和自己的电脑的不一样的原因。
在cmd-adb shell-setprop net.dns1 自己电脑的dns(详见上一篇转载)。
当然,这个不能忘了哈
<uses-permission android:name="android.permission.INTERNET" />
2.实际连接的代码不多说了,网上有的是,我直接上代码了,这里面就是.svc和.asmx的区别了,注释的是.asmx的soaaction是命名空间+方法名,.svc的soapaction是命名空间+契约名(这个我不是很懂,不知道叫法有没有问题,欢迎指出错误)+方法名。其实很早就实现了连接.asmx后缀的,但是就是实现不了连接.svc的
package com.example.wstest1; import java.io.IOException; import org.ksoap2.SoapEnvelope; import org.ksoap2.SoapFault; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import org.xmlpull.v1.XmlPullParserException; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; public class MainActivity extends Activity { private final static String TAG = "MainActivity"; // 命名空间 private static final String serviceNameSpace = "http://tempuri.org/"; // 方法名称 private static final String methodName = "ReceviceCommand"; // 请求URL private static final String serviceURL = "http://10.14.4.67:3009/ITHmeApp/ITHomeService.svc"; //private static final String serviceURL = "http://10.14.4.67:3009/ITHmeApp/ITHomeService.asmx"; // SoapAction private static final String soapAction = "http://tempuri.org/IITHome/ReceviceCommand"; //private static final String soapAction = "http://tempuri.org/ReceviceCommand"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView t = (TextView) findViewById(R.id.test1); String re = getRequestData(); t.setText(re); Log.e(TAG, re); } /** * * @return * @throws IOException * @throws XmlPullParserException */ private String getRequestData() { // 实例化SoapObject对象,指定webService的命名空间以及调用方法的名称 SoapObject request = new SoapObject(serviceNameSpace, methodName); // example方法中有一个String的参数,这里将“android client”传递到example中 request.addProperty("inputCommand", "oh"); // 获得序列化的Envelope SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.dotNet = true; envelope.bodyOut = request; // Android传输对象 HttpTransportSE transport = new HttpTransportSE(serviceURL); transport.debug = true; // 调用WebService try { transport.call(soapAction, envelope); } catch (IOException e) { // TODO Auto-generated catch block return e.getMessage(); } catch (XmlPullParserException e) { // TODO Auto-generated catch block return e.getMessage(); } try { if (envelope.getResponse() != null) { return envelope.bodyIn.toString(); } } catch (SoapFault e) { // TODO Auto-generated catch block return e.getMessage(); } return null; } }
3,这是核心问题了,纠结了好几天的问题,报错unterminated entity ref (position:TEXT
这个问题在连接.asmx完全不存在,但是连接.svc就是怎么也找不到,然后找了一下国外的论坛终于发现,原来,是ksoap2版本的问题,我用的是最新的2.6.5,但是不知是2.6.5一个bug还是其他什么原因,需要换成2.5.7的,坑爹啊````
相关文章推荐
- Android使用Json和ksoap2调用WebService(WCF)
- Android 人脸识别————关于虹软人脸识别SDK引擎使用总结
- Android使用ksoap2调用C#中的webservice函数方法
- Android使用ksoap2调用C#中的webservice函数方法
- Android使用ksoap2-android调用WebService学习
- 使用svcutil工具自动生成wcf调用的客户端代码和配置文件
- 关于android中webservice使用ksoap2传递复杂对象的研究
- 【总结】关于在Android中如何使用字符串数组String[]
- Android使用KSOAP2等第三方jar包调用WebService出现java.lang.NoClassDefFoundError.的解决办法
- iOS-90-调用后台接口(WCF,soap访问方式,接口后缀.svc形式),使用WSDL2objc工具才能搞定
- Android 系统应用调用,intent的使用总结帖(转自android专区)
- WCF服务端与使用HttpClient的Android客户端简单示例
- android使用httppost向c# wcf发送数据总结
- KSoap2-android的调用以及封装使用
- 在Android 中使用KSOAP2调用WebService
- Android 关于观察者模式使用代码总结
- Android使用ksoap2调用C#中的webservice函数方法
- Android使用Ksoap2调用Web service传递自定义对象,List,大文件
- Android关于PagerAdapter的使用方法的总结
- 关于Android中使用SVG特性的探索与总结