问题描述
- 关于android 调用 .net webservice
-
各位大神好,我是自学安卓,我按照回答里二楼的网址里的方法,可惜出了错误,我不知道该怎么改。主函数如下:
public class MainActivity extends Activity{
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
try {
DBUtil dbUtil=new DBUtil();
dbUtil.IsUserNameExist();
} catch (Exception e) {}
}};
Button button = (Button) findViewById(R.id.query_btn);
button.setOnClickListener(listener);
}
}然后调用DBUtil这个类:
public class DBUtil {
private ArrayList<String> arrayList = new ArrayList<String>(); private ArrayList<String> brrayList = new ArrayList<String>(); private GetWebService gws = new GetWebService(); public boolean IsUserNameExist() { arrayList.clear(); brrayList.clear(); return gws.GetWebService1("GetCountry", arrayList, brrayList); }
}
然后就是webservice
public class GetWebService {
private String result; //Except method "getAllInfo" and "getAllTestData" public boolean GetWebService1(String methodName, ArrayList<String> Parameters, ArrayList<String> ParValues) { //命名空间 String nameSpace = "http://www.shijinet.com.cn/kunlun/kws/1.1/"; //EndPoint String endPoint = "http://http://10.0.2.2:8082/kws/InformationService.asmx"; //SOAP Action final String soapAction = nameSpace + methodName; final HttpTransportSE transport = new HttpTransportSE(endPoint); transport.debug = true; //指定WebService的命名空间和调用的方法名 SoapObject rpc = new SoapObject(nameSpace, methodName); for (int i = 0; i < Parameters.size(); i++) { rpc.addProperty(Parameters.get(i), ParValues.get(i)); } //生成调用WebService方法的SOAP请求信息,并指定SOAP的版本(10、11或者12) final SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.bodyOut = transport; //设置是否调用的是.Net开发的WebService envelope.dotNet = true; envelope.setOutputSoapObject(rpc); //android 4.0以后的版本在主程中不允许联网 Thread thread; thread = new Thread() { public void run() { try { //调用WebService transport.call(soapAction, envelope); SoapObject object = (SoapObject) envelope.bodyIn;//获取返回值,并封装成SoapObject result = object.getProperty(0).toString(); } catch (IOException e) { e.printStackTrace(); } catch (XmlPullParserException e) { e.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); } } }; thread.start(); try { thread.join();//等待该子程结束 } catch (InterruptedException e) { e.printStackTrace(); } if (result.equals("true")) { return true; } else { return false; } }
}
出错点就在走到webservice方法里面的
//android 4.0以后的版本在主程中不允许联网
Thread thread;
thread = new Thread()
这个地方的时候,没有进去里面,直接跳到了
thread.start();
这个地方实在搞不出来了,特来求教,谢谢各位
解决方案
用fiddler调试下,看服务器返回了什么错误状态码。如果是404就是地址不对,如果是500,服务器的问题,20x就是返回了数据。然后看你的解析。
解决方案二:
首先,你的TAG变量没有用,其次SERVER_URL就是你需要调用的webservice的地址。最后我想说的是,你可以用ksoap2-android这个jar包来调用webservice,很简单。参考:http://blog.csdn.net/usernameforcsdn/article/details/48400611
解决方案三:
求大神快来帮帮我,,,,
解决方案四:
package com.fairyeye.simple;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android......
答案就在这里:Android 调用.NET webservice