大二訪問頁面後工作我的問題非常奇怪(對我來說)。我使用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);
}