2015-11-28 5 views
0

Я использую Apache HttpComponents для создания http-соединения с веб-сайтом. Я сделал несколько способов получить содержимое веб-сайта, используя post/get, отправлять файлы cookie, получать их и хранить их в классе, который я создал с помощью CookieManager. Все работает нормально, но когда я пытаюсь получить содержимое страницы с использованием метода GET, программа продолжает работать, но ничего не делает.Apache HttpComponents в java HttpClient.execute (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 'network', чтобы увидеть взаимодействие между браузером и сервером, единственное, что я не включаю в некоторые заголовки (например, Host). Кто-нибудь знает, что я делаю неправильно? Благодаря

ответ

0

я был в состоянии исправить это, добавив следующую строку внутри функции, перед client.execute(...) вызова: client = HttpClientBuilder.create().build();

Смежные вопросы