我做了一个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。
答案 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。