gpt4 book ai didi

java - 从 Android 应用程序调用 Web 服务似乎挂起

转载 作者:行者123 更新时间:2023-11-30 09:28:54 25 4
gpt4 key购买 nike

我正在尝试从 Android 应用调用 asmx 网络服务。今天刚刚开始一些Android开发。我一直在关注我在网上和这里找到的各种解决方案,但似乎比预期的要难。我已经尝试了各种解决方案,使用 KSoap2 似乎是实现它的最简单方法,如果我能让它工作,那就太好了。

我有以下代码可以工作到某一点:

private class CallWebService extends AsyncTask<Void, Void, Void> {

private static final String SOAP_ACTION = "http://tempuri.org/GetUser";
private static final String METHOD_NAME = "GetUser";
private static final String NAMESPACE = "http://tempuri.org/";
private static final String URL = "http://160.10.1.79:59315/Service1.asmx";
TextView tv;

@Override
protected Void doInBackground(Void... params) {
tv=(TextView)findViewById(R.id.txtMessage);

try {
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
envelope.setOutputSoapObject(request);

HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

androidHttpTransport.call(SOAP_ACTION, envelope);

Object result = (Object)envelope.getResponse();

tv.setText(result.toString());
}
catch (Exception e) {
tv.setText(e.getMessage());
}
return null;
}
}

它似乎卡在行 androidHttpTransport.call(SOAP_ACTION, envelope); 有什么想法吗?这是正确的方法吗?我应该朝另一个方向看吗?

最佳答案

 tv.setText(result.toString());

完全不建议从 doInBackground 访问 UI。

doInBackground 会自动将结果传递给 onPostExecute,您可以在那里设置文本

protected void onPostExecute(String result){
tv.setText(result.toString());
}

关于java - 从 Android 应用程序调用 Web 服务似乎挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13805541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com