u010104984 2015-09-17 23:43 采纳率: 0%
浏览 1713

关于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();
这个地方

实在搞不出来了,特来求教,谢谢各位

  • 写回答

4条回答 默认 最新

  • Robot-C 2015-09-17 23:46
    关注

    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
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?