感谢您的关注。
我在使用 ksoap2 通过 android 调用 web 服务时遇到问题。
我有一些调用网络服务的功能。
public String CallWebServiceFunction()
{
String WSDL_TARGET_NAMESPACE = "http://MyWeb.com/";
String SOAP_ADDRESS = "http://MyWeb.com/pvws.asmx";
String SOAP_ACTION = "http://MyWeb.com/SoapAction";
String OPERATION_NAME = "SoapAction";
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE,OPERATION_NAME);
PropertyInfo prop1 = new PropertyInfo();
prop1.setName("prop1");
prop1.setValue("1");
request.addProperty(prop1);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
Object response=null;
try
{
httpTransport.call(SOAP_ACTION, envelope);
response = envelope.getResponse();
}
catch (Exception exception)
{
response=exception.toString();
}
return response.toString();
}
当我使用使用API 16 或更高版本(Android 4.x)的模拟器(或真实设备)时 - 一切正常,函数从 web 服务获得正确响应。但是当我将模拟器(或真实设备)与API 7(Android 2.x)一起使用时,我会遇到异常
“java.net.UnknownHostException:主机未解析:MyWeb.com:80”
我在两种情况下都使用相同的代码,一个接一个地尝试 - 我得到不同的结果
有人有什么想法吗?
UPD1:我清单中的权限部分是
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
UPD2:假设。最初,我为 targetSdkVersion=16 创建了我的应用程序。因此,当我通过 Internet 调用 web 服务时,我使用多线程代码。也许,当它与 API7 一起工作时,源代码不应该是多线程的?
UPD3:假设是错误的。从主线程调用 webservice 会导致相同的异常。
但我注意到,当我在另一台计算机上运行我的项目时 - 它工作正常。尽管我使用相同的代码。