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

标签 java android web-services asmx ksoap2

我正在尝试从 Android 应用程序调用 asmx Web 服务。今天刚刚开始一些 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/

相关文章:

android - 如何修复 firebase 数据库 ui 列表适配器

android - 如何在 android 中制作模糊(倾斜移位)效果?

web-services - 保护使用 Web 服务的移动应用程序的最佳实践

java - 如何从服务中的线程以特定时间间隔运行方法...?

java - 接入提供商运营商通过this使用super的情况

java - 当 API 不应该是公共(public) API 时,在 AWS 上部署我的 REST API

java - 通过 Linux 以 headless 模式运行 Selenium 会导致错误

java - Android - 模块化应用程序设计

asp.net-mvc - Update Service Reference 坚持将 Soap12 添加到 Config 中。

java - Web 服务客户端编程语言