使用动态DNS URL时无法更新Java Servlet

时间:2012-04-06 17:05:37

标签: java servlets dynamic

我有一个java类需要更新Java Servlet中的一些数据。 当我在家庭网络中使用IP或者即使我正在使用我的IP时,它工作正常 ISP ip(从路由器转发)。

但现在,当我想用​​实际的动态DNS更新servlet时 和我的ISP一样,它不起作用。

奇怪的是我可以使用动态DNS从servlet获取数据。

这是我的代码:(我只是盯着ip和DDNS地址) 注意:动态DNS(在代码中:http://example.zapto.org)与stared ip相同(在代码中:http://xx.xxx.xxx.xxx:8084)。使用IP时,它不会使用DDNS。

public class SendGsonToServlet {
public static boolean sendGson (String qrCode){

    try {
        String jsonStr = new Gson().toJson(qrCode);

//          URL servletURL = new URL("http://example.zapto.org/Android_Server/data");
            URL servletURL = new URL("http://xx.xxx.xxx.xxx:8084/Android_Server/data");
//          URL servletURL = new URL("http://192.168.1.108:8084/Android_Server/data");

        // assumes protocol is http, could be https
        HttpURLConnection conn = (HttpURLConnection)servletURL.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");

        PrintWriter out = new PrintWriter(conn.getOutputStream());
        out.println(jsonStr);
//          out.flush();
        out.close();

        System.out.println(conn.getResponseCode());

    }catch (Exception e) {

    }

    return true;
}

}

谢谢大家和节日快乐:)

1 个答案:

答案 0 :(得分:0)

如果ping为您提供了另一个IP地址,并且如果使用此IP地址您的测试失败,则可能:

  • 或者您无法使用公共IP在局域网内获得服务;
  • 或者DDNS在IP评估中失败;
  • 或者您的ISP没有为您提供公共IP,并且它使用NAT到其私有子网。