Я использую Apache HttpComponents для создания http-соединения с веб-сайтом. Я сделал несколько методов для получения содержимого веб-сайта с помощью post/get, для отправки файлов cookie, их получения и сохранения в созданном мной классе под названием CookieManager. Все работает нормально, но когда я пытаюсь получить содержимое страницы с помощью метода GET, программа продолжает работать, но ничего не делает.
public HttpResponse sendRequestGet(String url, List<NameValuePair> headers) throws IOException{
HttpGet get = new HttpGet(url);
for (NameValuePair header : headers){
get.setHeader(header.getName(), header.getValue());
}
HttpResponse response = client.execute(get);
System.out.println("----------- STATUS CODE -------------");
System.out.println(response.getStatusLine().getStatusCode() + ": " + url);
System.out.println("-------------------------------------");
return response;
}
Код показан выше. Строка url содержит URL-адрес, к которому я хочу получить доступ, скажем, http://mylink.com/market и параметры заголовков сделаны так:
List<NameValuePair> headerList = new ArrayList<NameValuePair>();
headerList.add((NameValuePair) new BasicNameValuePair("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"));
headerList.add((NameValuePair) new BasicNameValuePair("Accept-Language", "en-US;q=1,en;q=0.8"));
headerList.add((NameValuePair) new BasicNameValuePair("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36"));
headerList.add((NameValuePair) new BasicNameValuePair("Cookie", getCookies()));
headerList.add((NameValuePair) new BasicNameValuePair("Referer", "http://mylink.com/profile/"));
headerList.add((NameValuePair) new BasicNameValuePair("Upgrade-Insecure-Requests", "1"));
Если я вызываю функцию с getCookies(), возвращающей пустую строку, она работает, но проблема в том, что я должен отправить свой идентификатор сеанса, который находится в файлах cookie. Я попытался выполнить отладку и обнаружил, что, поскольку строка HttpResponse response = client.execute(get);
ничего не делает, программа все еще выполняется, но застревает в этой строке. Кроме того, я должен упомянуть, что я могу заставить другие страницы отправлять необходимые файлы cookie, но http://mylink.com/market/ дает мне эту проблему.
Я уже использовал вкладку «Сеть» Chrome, чтобы увидеть взаимодействие между браузером и сервером, единственное, что я не включаю некоторые заголовки (например, Host). Кто-нибудь знает, что я делаю неправильно? Спасибо