我是Android的初学者。我开发了一个应用程序,它将位置信息发送到服务器(纬度和经度值)。
我现在使用Dynamic IP
来发送信息。
我遇到的问题是在使用WIFI
时信息传递到服务器但是当我使用Mobile Internet
时,我无法将信息发送到服务器。请帮忙。
Location location = locationManager.getLastKnownLocation( LocationManager.NETWORK_PROVIDER);
if (location != null)
{
String message = String.format( "Current Location \n Longitude: %1$s \n Latitude: %2$s ",location.getLongitude(), location.getLatitude());
Toast.makeText(MainActivity.this, message,Toast.LENGTH_LONG).show();
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.1.7/YourPhpScript1.php");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("id", "12345"));
nameValuePairs.add(new BasicNameValuePair("message", message));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
httpclient.execute(httppost);
}
catch (ClientProtocolException e)
{
}
catch (IOException e)
{
}`
这里192.168.1.7是我的动态IP地址
答案 0 :(得分:2)
关于端口重定向问题,
此IP地址“192.168.1.7”是您的本地IP地址。哪些只能通过WIFI访问,但是当您使用移动互联网时,您不在本地网络中。您应该通过外部IP地址连接。但你的调制解调器可能阻止你所有的连接将端口80从调制解调器重定向到计算机,并禁用计算机的防火墙端口80。
只需逐步检查所有这些内容。
您当前的基础设施
+-----+ +-------+ +---+
| PC | --------| Modem |-------- INTERNET ~ ~ ~ ~ ~ | |
| | | +-------+ | |
+-----+ | (external IP 75.1xx.2x.3x) +---+
(192.168.1.7) | (internal IP 192.168.1.1) (With mobile internet)
|
+---+
| |
| |
+---+
Mobile Phone (With wifi connection)
答案 1 :(得分:1)
有几种方法可以从Android应用程序与服务器通信。我假设您正在尝试使用原始套接字。
我的建议是,你应该使用json / soap通讯。它非常简单,当您使用标准http端口80时,您应该能够通过防火墙和其他通信障碍。
为确保安全,您可以使用https(端口443)。
除此之外,这里的问题似乎更像是网络编程的网络。您能否发布一些代码,以便对其进行一些评论。