推动Android

时间:2014-10-01 18:50:13

标签: android http-post google-cloud-messaging ioexception

我做了一个GCM应用程序。

我通过Node.js创建了Web服务器,并且使用Postman检查了我的POST是否运行正常。

所以,我正在创建一个应用程序,当点击按钮时,它会发布,因此GCM消息会出现在我的设备上。

这是我的邮政编码。

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(SERVER_URL+"/push");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        //nameValuePairs.add(new BasicNameValuePair("id", "12345"));
        //nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
    } catch (IOException e) {
        // TODO Auto-generated catch block
        Log.v("11111", "11111");
    }

我的POST没有任何参数,因此nameValueParams什么都没有。

但是在我的日志猫中,它显示了log.v(“11111”,“11111”);

有一个IOException,有什么问题?我的清单还包括INTERNET PERMISSION。

每个示例代码都有该结构,但它会转到IOException。

1 个答案:

答案 0 :(得分:1)

如果您使用开发系统作为服务器,则不能使用localhost,因为它将指向您的Android设备本身,而不是服务器。

如果您要在模拟器上测试此代码,则可以将localhost替换为10.0.2.2。当模拟器在您的开发系统上运行时,它可以与服务器via emulator internal network

通信

如果您想在手机设备上测试,而不是在模拟器上测试,则需要从互联网访问服务器,或者让您的手机和服务器位于同一个wifi或本地子网上。您还需要将服务器配置为allow network connections coming in from different networks, see this SO question