Я использую этот код для извлечения данных из URL с помощью AsyncTask
:Как я могу получить длину контента из заголовка ответов?
protected String doInBackground(Object... params) {
int ResponseCode=-1;
try {
URL myURL=new URL("URL...");
HttpURLConnection connection=(HttpURLConnection) myURL.openConnection();
connection.connect();
ResponseCode=connection.getResponseCode();
if (ResponseCode==HttpURLConnection.HTTP_OK) {
InputStream inputStream=connection.getInputStream();
Reader reader=new InputStreamReader(inputStream);
int contentLength=connection.getContentLength();
char[] charArray=new char[contentLength];
reader.read(charArray);
String responseData=new String(charArray);
Log.i("TAG", responseData);
Log.i("TAG", ""+contentLength);
}
else {
Log.i("TAG", " Unsuccessful HTTP Response Code: "+ResponseCode);
}
}catch (MalformedURLException e) {
Log.i("TAG", "MalformedURLException Error: "+e.getMessage());
} catch (IOException e) {
Log.i("TAG", "IOException Error: "+e.getMessage());
} catch (Exception e) {
Log.i("TAG", "Exception Error: "+e);
}
return " "+ResponseCode;
}
выше код работает отлично, и я использую его в некоторых проектах, но для URL, что я работаю, это не работать и всегда возвращать -1 для Response Code
, because the HTTP response of my URL doesn't contain Content-Length
header, the content is chunked., теперь я хочу знать Есть ли эквивалентный способ сделать это?
Благодаря передовому
** «... Есть ли эквивалентный способ сделать это?» **: Совершенно просто, нет. Если вы не загрузите все это и не проверите длину, это невозможно. Единственная небольшая возможность заключается в том, что вы контролируете код на стороне сервера и добавляете ответ «Content-Length» или некоторый способ запроса длины. – Squonk
Спасибо, но сервер не в моем распоряжении. –