我使用HttpURLConnection通过POST向服务器发送数据。我设置标头,然后获取输出流并写入一些字节,然后关闭输出流。
我试图从给定的网址获取时间表细节的下一页。但是有些我怎么也得不到结果。请帮助任何人,如果你知道这个代码中的任何问题。
我看到的是有错误的第一页,而不是第二页。"您选择的电台组合无效。请致电LIRR旅游信息中心,电话号码是(718) 217-5477,向客服代表咨询更多信息。”
public static void main(String[] args) throws Exception {
String url = "http://lirr42.mta.info";
String cookie = retrieveCookies(url);
String urlParameters = "FromStation=56&ToStation=8&RequestDate=08/24/2013&RequestTime=01:00&RequestAMPM=PM&sortBy=1&schedules=schedules";
String page = postHttpPage(url + "/index.php", urlParameters, cookie);
System.out.println(page);
System.out.println();
}
public static String postHttpPage(String url, String urlParameters, String cookie) throws Exception {
System.out.println("\nSending 'POST' request to URL : " + url);
URL obj = new URL(url);
HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
return postPage(conn, urlParameters, cookie);
}
private static String postPage(HttpURLConnection conn, String urlParameters, String cookie) throws Exception {
conn.setRequestMethod("POST");
conn.setRequestProperty("User-Agent", "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(urlParameters.getBytes().length));
conn.setRequestProperty("Content-Language", "en-US");
conn.setRequestProperty("Cookie", cookie);
//conn.setInstanceFollowRedirects(true);
// Send post request
//conn.setDoInput(true);
conn.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
wr.writeBytes(urlParameters);
//System.out.println("wr : " + wr.size());
wr.flush();
wr.close();
StringBuffer response = new StringBuffer();
int responseCode = conn.getResponseCode();
System.out.println("Post parameters : " + urlParameters);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
}
public static String retrieveCookies(String url) throws IOException{
URL obj = new URL(url);
HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
String cookies=conn.getHeaderField("Set-Cookie");
System.out.print("cookies: " + cookies);
conn.disconnect();
return cookies;
}
HttpURLConnection.getResponseCode();
此方法可能会对您有所帮助。
它强制连接真正建立连接。
也许你想使用Apache HttpClient让你的生活更轻松...
你应该
字符串urlParameters=“FromStation=56
进入
字符串urlParameters=“”FromStation=56
你漏掉了“?”在index.php和参数之间。
问题内容: 我正在学习有关Java的知识,并且一直困扰着这个问题:当我尝试使用简单的方法(例如)时,编译器给我错误。这是代码: 该方法在Javadoc中定义。 这样做应该很简单,但是我真的不知道我在做什么错。 问题答案: 您已经创建了自己的类,并且没有使用内置的Java类。您尚未定义。
问题内容: 我有一个像这样开始的函数: 我正在输入字符串“ 1 + 2 * 3 ** 4”,但是return语句根本没有删除空格,我也不知道为什么。我什至没有运气尝试过.replace()。 问题答案: Strip不会在所有地方(仅在开头和结尾)删除空格。尝试这个: 在这种情况下使用是多余的(显然,感谢评论员!)。 在我休息之前(感谢OP!)的PS Bonus有用片段:
我已经覆盖了和所以我不太确定出了什么问题。它们是使用 Eclipse 生成的(来源 -
看下面的代码: 该代码是从 netty 的安全聊天客户端类 http://netty.io/wiki/user-guide-for-4.x.html 修改而来的,并添加了行 在while循环之前。服务器上的输出不读取该行。我不明白为什么会这样,对我来说,ch.writeandflush方法本身似乎在循环之外不起作用。 如果我不应该在循环之外使用ch.writeandlfush,有没有更好的方法在启
问题内容: 我对Spring 3.2.3 @Transactional注解有疑问。我的服务类如下所示: 如果我调用persist()方法,所有方法都可以正常工作。但是,如果我在类级别将@Transactional注释掉- 事务将不会启动。谁能告诉我为什么Spring只能在methol级忽略@Transactional? 问题答案: 您不能从processDisclosureData()调用pers
问题内容: 今天,我遇到了一个有趣(非常令人沮丧)的方法问题,该问题导致我认为是一个经过良好测试的类崩溃了,并导致了一个错误,使我花了很长时间来追踪。 为了完整起见,我没有使用IDE或调试器-只是老式的文本编辑器和System.out。时间非常有限,这是一个学校项目。 无论如何- 我开发一个基本的购物车可能包含的Book对象。为了贯彻落实,以及对车的方法,我想检查,如果在已经存在。所以我走了 在测