网站http://l2on.net/包含下拉列表:
<select size="1" onchange="window.location.href = '/?c=market&a=search&q=&type=0&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&a=search&q=&type=0&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了解不多,所以我可能做错了什么,
请帮助。
答案 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。
如果有效,那么使用某些东西来识别自己可能是正确的做法。