2011-11-03 69 views
0
  1. 網站:http://na.leagueoflegends.com/ladders/solo-5x5
  2. 搜索AA播放器(例如:Jaiybe)
  3. 您重定向(在這種情況下:http://na.leagueoflegends.com/ladders/solo-5x5?highlight=28&page=1
  4. 閱讀內容

我想在java/android中這樣做。HTTP POST和響應的具體案例研究

  1. 我分析搜索時,網站POST請求,結果是:

    • OP:搜索
    • 球員:Jaiybe
    • ladder_id:3
    • form_build_id:外形fff5e6e2569f1e15e5a5caf2a61c15e2
    • form_id:ladders_filter_form
  2. 構建一個簡單的HTTP POST混合物,並讓閱讀的內容...

代碼:

HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://na.leagueoflegends.com/ladders/solo-5x5"); 

// Add your POST METHOD attributes 
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
nameValuePairs.add(new BasicNameValuePair("op", "Search")); 
nameValuePairs.add(new BasicNameValuePair("player", Jaiybe)); 
nameValuePairs.add(new BasicNameValuePair("ladder_id", "3")); 
nameValuePairs.add(new BasicNameValuePair("form_build_id","form-daca6fff89cedc352ccc3f533afa3804")); 
nameValuePairs.add(new BasicNameValuePair("form_id","ladders_filter_form")); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

// Execute HTTP Post Request 
HttpResponse response = httpclient.execute(httppost); 
responseBody = EntityUtils.toString(response.getEntity()); 
return responseBody; 

當我運行它 - 我得到這麼某種離線頁面...

數字form_build_id - 不斷變化,但這是沒有問題的,使用仍然是一樣的,也如果我想「測試」,如果這可能是問題,我不知道如何我會...

OR:還有其他 - 快速 - 如何獲得相同的結果嗎?

奇怪的是,我在android上獲得的「error」網站源代碼與我在我的PC(Win7,Eclipse,Java)或我的瀏覽器上運行相同。好像會有兩個版本的離線網站 - 移動和PC - 但我的問題是:服務器如何知道代碼在Android設備上運行?有沒有辦法如何在HttpClient中設置?

+0

這是你寫的網站,還是你想解析別人的網站?只是好奇。如果你有網站代碼的控制,那麼有更簡單的方法。 –

+0

只解析第三方網站。 –

+0

http://stackoverflow.com/questions/3658721/httpclient-4-error-302-how-to-redirect –

回答

1
form_build_id:form-fff5e6e2569f1e15e5a5caf2a61c15e2 

這是一個自動生成的令牌是有效的一定的時間段。這可能是問題的根源,也是令牌首先存在的原因(以防止發佈後續垃圾郵件)。

由於此標記似乎不是基於會話的,因此您可以在生成表單的頁面上實際使用HTTP Get,並且每次爲您的HTTP Post解析出生成的標記。

關於OS檢測,瀏覽器通常使用HTTP User-Agent標頭提供有關操作系統的信息。

+0

那好吧,有沒有關於這個令牌的方法? –

+0

正如我已經提到的,你需要從http://na.leagueoflegends.com/ladders/solo-5x5每次解析出令牌。不過,我建議您聯繫Riot以瞭解他們的立場。 –

+0

我一直在java(Eclipse PC)中使用相同的標記,它的工作原理。不要以爲這會是問題。 –