我使用這個代碼使用AsyncTask
獲取從URL數據:如何從響應頭獲取內容長度?
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;
}
上面的代碼工作正常,我使用它的一些項目,但網址我的工作,它不工作和總是返回-1爲Response Code
,because the HTTP response of my URL doesn't contain Content-Length
header, the content is chunked.,現在我想知道有沒有任何等效的方式來做到這一點?
在先進的感謝
** 「......有沒有相應的方法可以做到這一點?」**:很簡單,不。除非你下載完整的東西,然後檢查長度,否則沒有辦法。唯一的可能是如果你在控制服務器端代碼,並且添加'Content-Length'響應或者其他查詢長度的方法。 – Squonk
謝謝,但服務器不在我的控制之下。 –