我尝试在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");
}
答案 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");