Java中出现意外的URL请求

时间:2014-04-29 14:21:41

标签: java html

网站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>

我的猜测是可以选择我需要的服务器&#34; GET&#34;查询,就像它在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了解不多,所以我可能做错了什么,

请帮助。

2 个答案:

答案 0 :(得分:0)

这可能是一个疯狂的猜测。它可能在您的浏览器中运行的原因是,在您的浏览器中,您已经对网站进行了身份验证吗?

我的浏览器未经过此网站的身份验证。当我尝试这个网址时:

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

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

这正是您的Java程序发生的事情。

答案 1 :(得分:0)

也许是另一种疯狂的猜测,但这最近在连接到某些网站时帮助了我。

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

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

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

我建议您尝试使用浏览器启动的内容。你可以得到here

如果有效,那么使用某些东西来识别自己可能是正确的做法。