Android DDNS更新URL

时间:2016-04-01 13:02:59

标签: java android url dns

我尝试在Android客户端更新我的DDNS(No-IP)。

我向以下网址发出请求。(Discription)

http://username:password@dynupdate.no-ip.com/nic/update?hostname=mytest.testdomain.com&myip=1.2.3.4

当我使用我的网络浏览器时,一切正常。

"good [ip-address]"

但我的Android客户端只获得响应"nochange"

 URL url = new URL("http://" + USERNAME + ":" + PASSWORD + "@dynupdate.no-ip.com/nic/update?hostname=" + HOSTNAME + "&myip=" + IP_ADDRESS);
 HttpURLConnection conn = (HttpURLConnection) url.openConnection();
 conn.setRequestMethod("GET");
 int i = conn.getResponseCode();
 stringBuilder = new StringBuilder();
 bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line;
 while ((line = bufferedReader.readLine()) != null) {
   stringBuilder.append(line + "\n");
 }

1 个答案:

答案 0 :(得分:0)

来自 http://www.noip.com/integrate/request

  

进行更新时,重要的是您的http请求包含HTTP用户代理,以帮助No-IP识别访问系统的不同客户端。不提供用户代理风险的客户端将被阻止进入系统。

所以你可能需要按照该页面上的描述设置UserAgent,具体来说就是这样(用你自己的应用程序的数据代替这些细节):

  

User-Agent:NameOfUpdateProgram / VersionNumber maintainercontact@domain.com

有关如何在使用HttpUrlConnection时设置UserAgent的详细信息,请参阅here,这样的事情应该有效:

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
hc.setRequestProperty("User-Agent", "NameOfUpdateProgram/VersionNumber maintainercontact@domain.com");