我想创建一个小的Java应用程序以便与HTML服务器进行通信:我需要POST POST表单和GET结果,使用Wireshark,我捕获了包中的内容我应该发送。这是这样的:Java中的HTTP POST-GET应用程序
__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDwU[..]
[...]__EVENTVALIDATION=%2FwEWJAK9%2Fu[...]
TxTNumeroPalina=3329&ListaLocalit%C3%A0=NAPOLI&TxTViaInteresse=&TxTCAP=&BtnInviaDati=Invia+Dati
其中点代表其他随机字符。 我应该收到一个包含一些巴士时间表的页面。我试过这种方式。
String eventTarget = "__EVENTTARGET" + "=" + "&";
String eventArgument = "__EVENTARGUMENT" + "=" + "&";
String viewState = "__VIEWSTATE" + "=" + "%2FwEPDwUJMj[...]";
String eventValidation = "__EVENTVALIDATION" + "=" + "%2FwEWJ[...]";
String eventObjects = eventTarget + eventArgument + viewState + eventValidation;
//form parameters
String numeroPalina = "TxtNumeroPalina" + "=" + "3329" + "&";
String listaLocalita = "Listalocalit%C3%A0" + "=" + "NAPOLI" + "&";
String viaInteresse = "TxtViaInteresse" + "=" + "" + "&";
String cap = "TxtCAP" + "=" + "";
String sendButton = "BtnInviaDati" + "=" + "Invia+Dati";
String locatorObjects = numeroPalina + listaLocalita + viaInteresse + cap;
String newData = URLEncoder.encode(eventTarget + eventArgument + viewState + eventValidation + locatorObjects, "UTF-8");
URL infoclickUrl = new URL("http://www.anm.it/Default.aspx");
HttpURLConnection connection = (HttpURLConnection)infoclickUrl.openConnection();
connection.setDoOutput(true);
HttpURLConnection.setFollowRedirects(true);
connection.setRequestMethod("POST");
OutputStreamWriter streamWriter = new OutputStreamWriter(connection.getOutputStream());
streamWriter.write(newData);
streamWriter.flush();
BufferedReader streamReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
String page="";
while ((line = streamReader.readLine()) != null) {
page += line;
}
streamReader.close();
streamWriter.close();
我永远无法得到正确的结果!它出什么问题了?
--->编辑: 在http://www.anm.it/Default.aspx你可以编译一个表格与一个特定的公交车站,发送它,并得到所选巴士站(到达巴士)的时间表。所以,我应该收到一个html页面,其中包含我的查询结果(如果我通过浏览器发送表单,它将起作用)。用我写的代码,我找回了一个包含最初页面的html页面。
界定“正确的结果”,并显示您实际接收 – 2012-01-09 00:16:32
如果您使用HTTP,为什么不使用,例如,Apache的常见的了HTTPClient? – fge 2012-01-09 00:20:47
我看到数据是作为一个多步骤进程接收的。然而,我看到你只是提出一个请求。如果您向我们显示在帖子中提到的整个网址,这将有所帮助。 – 2012-01-09 00:31:42