繁体   English   中英

Java中出现意外的URL请求结果

[英]Unexpected URL request result in Java

有一个带有下拉列表的网站http://l2on.net/

<select size="1" onchange="window.location.href = '/?c=market&amp;a=search&amp;q=&amp;type=0&amp;setworld=' + this.value;">
<option selected value="43">Cadmus</option>
<option value="44">Athebaldt</option>
<option value="45">Blackbird</option>
<option value="46">Ramsheart</option>
<option value="47">Esthus</option>
<option value="49">Lancer</option>
<option value="13">Airin</option>
<option value="5">Erica</option>
<option value="27">Elcardia</option>
</select>

我的猜测是可以通过“ GET”查询选择我需要的服务器,就像在html代码中一样。

<select size="1" onchange="window.location.href = '/?c=market&amp;a=search&amp;q=&amp;type=0&amp;setworld=' + this.value;">

提出建议后,代码如下所示:

    l2on = new URL("http://l2on.net/?setworld=BlackBird");
    l2onConn = l2on.openConnection();
    l2onConn.setRequestProperty("Accept-Charset", "UTF-8");
    l2onConn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
    l2onConn.connect();
    br = new BufferedReader(new InputStreamReader(l2onConn.getInputStream()));
    String line = null;
    while ((line = br.readLine()) != null) {
        content += line + System.lineSeparator();
    }
    System.out.println(content.contains("<option selected value=\"43\">Cadmus</option>"));

我也尝试了UrlEncoder.encode()来正确编码查询。 并作为服务器的setworld参数id传递(我在html页面源代码中找到),例如http://l2on.net/?setworld=45

所有这些东西都可以在浏览器中完美运行,而不能在Java中运行(我知道,因为毕竟在接受的页面中我可以找到

<option selected value="43">Cadmus</option>

这表明服务器没有任何变化,并且显示了默认服务器的信息,并且希望以某种方式检索所有可能服务器的信息。

抱歉,我对html不太了解,所以可能我做错了什么,

请帮助。

这可能是一个疯狂的猜测。 它可能在您的浏览器中起作用的原因可能是,在您的浏览器中,您已经通过了网站的身份验证?

我的浏览器未通过此网站的身份验证。 当我尝试以下网址时:

http://l2on.net/?setworld=Atlant

我将重定向到主页: http://l2on.net : http://l2on.net

这正是Java程序会发生的情况。

也许是另一个疯狂的猜测,但这最近在连接到某些站点时对我有所帮助。

有些站点会阻止某些用户代理,默认情况下,java使用的用户代理使您看起来像个机器人。 它将类似于“ Java / 1.6.0_14”,后一部分取决于Java版本。

您是否尝试过设置其他用户代理? 您可以这样做:

l2onConn.setRequestProperty("User-Agent", "Agent_you_want");

我建议尝试使用您的浏览器启动。 你可以在这里得到。

如果这行得通,那么使用某些东西来标识自己可能是正确的选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM