【问题标题】:Address family not supported by protocol exception协议异常不支持地址族
【发布时间】:2011-02-20 08:49:29
【问题描述】:

我正在尝试将几个值从 android 应用程序发送到我设置的 Web 服务。我正在使用 Http Post 发送它们,但是当我运行应用程序时,我收到错误请求时间失败 java.net.SocketException: Address family not supported by protocol。

我在使用模拟器和通过 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 代码包装在源代码块中)。

标签: java android


【解决方案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();
       }

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      10.0.2.2:8000 替换您的IP 192.168.0.12:8000。应该可以调试

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:
          <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-12-20
            • 1970-01-01
            • 2018-09-19
            • 1970-01-01
            • 1970-01-01
            • 2012-07-23
            • 2012-01-26
            • 1970-01-01
            相关资源
            最近更新 更多