【问题标题】:Android DDNS update URLAndroid DNS 更新网址
【发布时间】:2016-04-01 13:02:58
【问题描述】:

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

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

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

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

"good [ip-address]"

但是我的安卓客户端只得到响应"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");
 }

【问题讨论】:

    标签: java android url dns


    【解决方案1】:

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

    在进行更新时,您的 http 请求必须包含 HTTP 用户代理,以帮助 No-IP 识别访问系统的不同客户端,这一点很重要。不提供 User-Agent 的客户端有被系统阻止的风险。

    因此,您可能需要按照该页面上的说明设置 UserAgent,具体而言,类似这样(将这些详细信息替换为您自己的应用程序的数据):

    用户代理: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");

    【讨论】:

    • 添加user-agent没有效果,问题依旧。我尝试使用 android 浏览器提出请求,一切正常(我认为浏览器有他自己的用户代理)
    • @JohnnyCash,在那种情况下,我不知道还有什么问题,对不起
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多