Update: Если я использую System.out.println(EntityUtils.toString(response.getEntity()));
выходом является то, что, как представляется, недостающие строки HTML (в том числе закрытия body
и html
тегов). Однако печать в файл все еще только дает мне первые 2000 нечетных строки пропавших последнему 1000.Apache HttpClient не получает весь ответ
Я использую следующий код для выполнения запроса HTTP POST:
public static String Post(CloseableHttpClient httpClient, String url, Header[] headers,
List<NameValuePair> data, HttpClientContext context) throws IOException
{
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(data));
httpPost.setHeaders(headers);
CloseableHttpResponse response = httpClient.execute(httpPost, context);
if (response.getEntity() == null)
throw new NullPointerException("Unable to get html for: " + url);
// Get the data then close the response object
String responseData = EntityUtils.toString(response.getEntity());
EntityUtils.consume(response.getEntity());
response.close();
return responseData;
}
Однако я не получая полный объект ответа. Я не хватает около 1000 строк HTML (в том числе закрытие body
и html
теги Я думаю, что это происходит потому, что данные передаются на куски, хотя я не совсем уверен,
Вот заголовки ответа:..
Cache-Control:max-age=0, no-cache, no-store
Connection:Transfer-Encoding
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Sat, 04 Jul 2015 15:14:58 GMT
Expires:Sat, 04 Jul 2015 15:14:58 GMT
Pragma:no-cache
Server:Microsoft-IIS/7.5
Transfer-Encoding:chunked
Vary:User-Agent
Vary:Accept-Encoding
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
Как я могу гарантировать, что я получаю полную сущность ответа
Поделиться кодом для сохранения в файле - необходимо сделать ошибку – Antoniossss
@WandMaker definetly no – Antoniossss
@WandMaker Я так не думаю, см. Http://stackoverflow.com/questions/15969037/why-did-the-author -use-entityutils-consumehttpentity – james