java - Android kSOAP Web服务问题

标签 java android web-services ksoap

我正在尝试通过 kSOAP(直接从 Google 下载并包含“.jar”)调用公共(public) Web 服务 (w3schools.com/webservices/tempconvert.asmx)。

这是我的代码:

// declarations

private static final String NAMESPACE = "http://tempuri.org/" ;
private static final String METHOD_NAME = "CelsiusToFahrenheit";
private static final String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit";
private static final String URL = "http://216.128.29.26/webservices/tempconvert.asmx";

// code

try
{
   SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
   SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
   HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

   request.addProperty("Celsius", "32");
   envelope.setOutputSoapObject(request);
   androidHttpTransport.call(SOAP_ACTION, envelope);

   Object result = envelope.getResponse();
}
catch(Exception e)
{
   e.printStackTrace();
}

此外,“AndroidManifest.xml”包含访问互联网的权限:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

此外,我的 AVD 可以访问互联网(通过浏览器应用尝试过)。

有人可以帮我吗?我已经尝试了大约 6 个小时,但仍然失败。

谢谢!

最佳答案

问题是您正在主线程上进行网络调用,而在 API 级别 12 中不再允许这样做。您只需将 ksoap2 调用移至 AsyncTask 等即可。顺便说一句,任何进行网络访问的操作都会出现此问题。这是强制执行的严格模式检查。

关于java - Android kSOAP Web服务问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6625683/

相关文章:

java - 将 DynamoDB 中的投影表达式设置为 EXCLUDE 列

java - eclipse 链接 : No Persistence provider for EntityManager named

java - 静态变量、局部变量存在于哪些内存中?

android - robolectric - 如何在创建 Activity 对象时模拟和注入(inject)业务类

java - 检测到智能卡或标签数据时停止计时器

java - 如何共享全屏图像android?

java - 使用 JDK 工具 wsimport 从 .NET 2.0 应用程序生成的 WSDL 生成 Java SOAP Web 服务客户端时出现问题

java - 将表的所有行打印到javabook数据库中的TextArea中

c++ - ATL Web 服务日志记录

java - 绑定(bind)CXF Client源IP地址