我正在尝试从android应用程序(使用模拟器)向web服务器(一个php页面)发送数据。首先,我用模拟器试过这个程序,它运行得很成功。之后,我用电话尝试了这个程序,但出现了一个异常:
-->IO异常:操作超时。
我的代码的一部分:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.1.33:90/takeDatas.php");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("enlem", latitude ));
nameValuePairs.add(new BasicNameValuePair("boylam", longitude ));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httppost);
} catch (ClientProtocolException e) {
Toast.makeText(ReportLocationActivity.this, "Client protokol exception ", Toast.LENGTH_LONG).show();
} catch (IOException e) {
Toast.makeText(ReportLocationActivity.this, "IO exception "+e.getMessage(), Toast.LENGTH_LONG).show();
}
我希望你能帮助我。
提前谢谢。
最佳答案
10.0.2.2是仿真器赋予主机的IP。
一般来说,10.x.x.x是aprivate IP block的一部分。
所以您必须在运行模拟器的同一台计算机上托管服务器?这是我能看到它在模拟器中工作的唯一方法。
不管怎样,你的应用程序需要服务器的实际IP,如果你想让它在你的网络之外工作,你需要你的公共IP(找到你的here),如果你有路由器,为端口90设置端口转发。This site是一个令人毛骨悚然的广告之谜,但它有大量的路由器特定指令集。
关于android - 超时异常(将数据从Android发送到PHP页面),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8495576/