我想創建一個小的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