协议不支持的地址族异常

3
我正在尝试从安卓应用向我设置的网络服务发送一些值。我使用 Http Post 进行发送,但当我运行应用程序时,我收到了错误消息-请求时间失败 java.net.SocketException: 协议不支持的地址族。
在使用模拟器和通过 wifi 连接的设备进行调试时,我都遇到了这个问题。我已经使用以下代码添加了互联网权限:
<uses-permission android:name="android.permission.INTERNET" />

这是我使用的代码发送数值。
    void insertData(String name, String number) throws Exception {
    String url = "http://192.168.0.12:8000/testapp/default/call/run/insertdbdata/";
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(url);

    try {
        List<NameValuePair> params = new ArrayList<NameValuePair>(2);

        params.add(new BasicNameValuePair("a", name));

        params.add(new BasicNameValuePair("b", number));
        post.setEntity(new UrlEncodedFormEntity(params));
        HttpResponse response = client.execute(post);
    }catch(Exception e){
        e.printStackTrace();
    }

我知道我的网络服务运行良好,因为当我从HTML页面发送值时,它可以正常工作。
<form name="form1" action="http://192.168.0.12:8000/testapp/default/call/run/insertdbdata/" method="post">
    <input type="text" name="a"/>
    <input type="text" name="b"/>
    <input type="submit"/>

我看到了类似问题的提问,但并没有真正找到解决方案。

谢谢。


你的问题有点被截断了(请确保将你的 XML 代码放在源代码块中)。 - Greg Giacovelli
5个回答

1

尝试将以下内容添加到您的AndroidManifest.xml文件中:

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

你还需要捕获这个异常:

 catch(SocketException ex)
       {
         Log.e("Error : " , "Error on soapPrimitiveData() " + ex.getMessage());
           ex.printStackTrace();
       }

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

AndroidManifest.xml文件中添加此权限。


0

将您的IP地址192.168.0.12:8000替换为10.0.2.2:8000。这样可以用于调试。


0

我以前遇到过这个问题。它与我的代码无关,而是连接没有建立。请检查您是否使用了正确的IP/端口。如果可以,请在服务机器上检查连接是否在该侧建立。


0
确保您的服务器上没有防火墙规则,只允许特定的 IP 地址连接。在我使用的服务器上,我运行了 ufw,只允许我的计算机的 IP 地址连接到所需的端口。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接