协议异常不支持的地址族

时间:2011-02-20 08:49:30

标签: java android

我正在尝试将一些Android应用程序中的值发送到我已设置的Web服务。我正在使用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"/>

我已经看到类似问题的问题,但还没有真正找到解决方案。

由于

5 个答案:

答案 0 :(得分: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();
       }

答案 1 :(得分:0)

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

答案 2 :(得分:0)

192.168.0.12:8000替换你的ip 10.0.2.2:8000。这应该适用于调试

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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