2016-05-10 93 views
0

大二訪問頁面後工作我的問題非常奇怪(對我來說)。我使用Volley將HTTP請求發送到this網站。使用相同的代碼,我得到3種類型的響應。其中一個是奇怪的符號(第一個是自己的錯誤頁面,第三個是我想要的:藥物的頁面)。凌空要求僅適用於桌面瀏覽器

我已經得到了想要的,實際的結果頁面的唯一辦法,是奇怪的事情。我正在向醫藥網頁發送HTTP GET。只要做到這一點,無論是1型還是2型。但是!當我第一次點擊鏈接(我在Android Studio中登錄它),並使用我的桌面瀏覽器進入頁面(通常經過幾次嘗試後,有時會彈出錯誤頁面),然後再次單擊我的應用中的鏈接,它會加載正常!

我已經試過了很多很多次,它確實似乎這是它的工作方式。我不重新啓動我的應用程序,因爲我可以返回到我的結果視圖並再次單擊該藥物。我可能會點擊藥物數十次,總是以錯誤頁面或怪異符號結束,但訪問我的桌面上的頁面,然後再次在應用程序中單擊它,總會產生所需的頁面。問題是什麼?關於餅乾的事情?

該請求的代碼如下:

public static void requestWithUrl(final HTTPRequestListener listener, final String url) { 
    Log.d("WUT", "URL: " + url); 

    final StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      Log.d("WUT", "Got url response"); 

      try { 
       String encoding = "UTF-8"; 
       String line; 
       InputStream stream = new ByteArrayInputStream(response.getBytes(encoding)); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(stream, encoding)); 
       while ((line = reader.readLine()) != null) { 
        Log.d("WUT", "LINE: " + line); 
       } 
      } catch (Exception e) { 
       listener.onHTTPFailure(); 
      } 

      listener.onFoundSingle("Title", response, true); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.d("WUT", "Got url error"); 
      listener.onHTTPFailure(); 
     } 
    }) { 

     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      Map<String, String> params = new HashMap<>(); 
      params.put("Content-Type", "text/html; charset=utf-8"); 
      return params; 
     } 

     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String, String> params = new HashMap<>(); 
      params.put("Host", "www.laakeinfo.fi"); 
      params.put("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0"); 
      params.put("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); 
      params.put("Accept-Language", "fi-FI,fi;q=0.8,en-US;q=0.5,en;q=0.3"); 
      params.put("Accept-Encoding", "gzip, deflate"); 
      params.put("Referer", "http://www.laakeinfo.fi/Search.aspx"); 
      return params; 
     } 
    }; 

    request.setTag(TAG); 

    queue.add(request); 
} 

回答

0

它似乎鍵入問題的開放是相當的治療,因爲我找到了答案。簡單地說,當我第一次請求藥品清單時,我得到中的Set-Cookie標題的內容並保存。然後,當我請求實際頁面時,我將Cookie參數設置爲保存的cookie,並且所有內容都像夢一樣。

相關問題