1

我是Android的初学者。我开发了一个应用程序,它将位置信息发送到服务器(纬度经度值)。

我现在使用Dynamic IPas 来发送信息。

我面临的问题是在使用信息时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 地址

4

2 回答 2

2

它关于端口重定向问题,

这个IP地址“192.168.1.7”是你的本地IP地址。只能通过 WIFI 访问,但是当您使用移动互联网时,您不在本地网络中。您应该通过外部 IP 地址连接。但是您的调制解调器可能会阻止您的所有连接。将端口 80 从调制解调器重定向到计算机并禁用计算机的防火墙端口 80。

只需一步一步检查所有这些。

  1. 从您的电脑防火墙打开端口 80 ( http://windows.microsoft.com/is-IS/windows-vista/Open-a-port-in-Windows-Firewall )
  2. 将端口 80 从您的调制解调器重定向到您的 PC(从列表http://portforward.com/english/routers/port_forwarding/中查找您的调制解调器品牌
  3. 更改您的应用程序以从您的外部 IP 地址连接。“http://external ip address/YourPhpScript1.php”(要查找您的外部 IP 地址,请访问http://www.whatismyip.com/

您当前的基础架构

  +-----+         +-------+                                     +---+
  | 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)
于 2012-10-03T08:21:02.803 回答
1

有几种方法可以从 android 应用程序与服务器通信。我假设您正在尝试为此使用原始套接字。

我的建议是,你应该使用 json/soap 通信。它非常简单,当您使用它时应该能够通过防火墙和其他通信障碍,因为它使用标准的 http 端口 80。

为了确保安全,您可以使用 https(端口 443)。

除此之外,这里的问题似乎更多的是网络而不是android编程。能否请您发布一些代码,以便我对此发表评论。

于 2012-09-28T06:47:11.017 回答