编程语言
首页 > 编程语言> > java – Android:ksoap,“UnknownHostException:host is unresolved”取决于API

java – Android:ksoap,“UnknownHostException:host is unresolved”取决于API

作者:互联网

感谢您的关注.

我在使用kso​​ap2通过android调用web服务时遇到问题.

我有一些功能来调用webservice.

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)的模拟器(或真实设备)时 – 一切正常,函数从webservice获得正确的响应.但是当我使用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调用webservice时,我使用多线程代码.也许,当它与API7一起使用时,源代码不应该是多线程的?

UPD3:假设错了.从主线程调用webservice会导致相同的异常.

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

解决方法:

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" />

标签:java,android,web-services,android-ksoap2
来源: https://codeday.me/bug/20190709/1408183.html