4

感谢您的关注。

我在使用 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 会导致相同的异常。

但我注意到,当我在另一台计算机上运行我的项目时 - 它工作正常。尽管我使用相同的代码。

4

3 回答 3

1
UnknownHostException:host is unresolved

确保您已在您的AndroidManifest.xml赞中添加了权限

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

确保其添加的内部 <manifest>标签不在任何其他标签内,如 <application>

PS。

还要确保以下权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
于 2013-09-13T10:34:59.703 回答
0

我认为对于 Android 2.x 缺席android.permission.READ_PHONE_STATE

试试看,

于 2013-09-13T10:56:33.983 回答
0

请检查您的数据连接或 wifi 是否开启

然后去清单并检查互联网

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

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
于 2016-04-21T05:30:29.690 回答