我正在嘗試使用Apache HTTPClient執行一個簡單的獲取請求,但它好像在HTTPResponse響應= client.execute(get)之後的所有代碼似乎;正在被跳過。我無法訪問響應對象的內容,它們都是空的。但是,當我使用調試模式,並探索對象,我看到所有的數據。這個函數被包裝在一個異步任務中,所以我想知道任務本身並沒有等待它被執行或者我不確定。Apache HTTPGet在Android中表現怪異
同樣的事情也發生在這裏: Android code after httpclient.execute(httpget) doesn't get run in try (using AsyncTask)
這裏是代碼。
@Override
public T execute()
{
utils = new GeneralUtils();
if(getURL() == null)
{
throw new NullPointerException("No path specified");
}
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(getURL());
Log.e(TAG,"client created");
if(getHeaders()!=null)
{
Log.e(TAG,"client created");
for(Map.Entry<String,String> header:getHeaders().entrySet())
{
get.addHeader(header.getKey(),header.getValue());
}
}
try
{
HttpResponse response = client.execute(get);
Log.e(TAG,"executed");
if(response==null)
Log.v(TAG,"its null as heell");
Log.v(TAG,response.getStatusLine().getReasonPhrase());
Log.v(TAG,String.valueOf(response.getStatusLine().getStatusCode()));
Log.e(TAG,getURL());
Log.v(TAG,"everything else is dead");
for(Header header:response.getAllHeaders())
{
Log.v(TAG,header.getName()+" "+header.getValue());
}
if(response.getStatusLine().getStatusCode() == 200)
{
if(response.getEntity().getContent()!=null)
{
try
{
if(utils.isExternalStorageWritable())
{
String path = getContext().getFilesDir().getAbsolutePath()+"/"+getFileCategory()+"/" +getAlarmId()+getFileExtension();
media = new File(path);
/**
* if the directory has not being created this function does the creation.
*/
media.mkdirs();
FileOutputStream fileOutputStream = new FileOutputStream(media);
IOUtils.copy(response.getEntity().getContent(),fileOutputStream);
fileOutputStream.close();
Log.e(TAG,media.getAbsolutePath());
return (T)media;
}
return null;
}
catch (ClientProtocolException e)
{
Log.v(TAG,e.getMessage());
}
catch (IOException e)
{
Log.v(TAG,e.getMessage());
}
}
}
}
catch (IOException e)
{
Log.e(TAG, e.getCause().getMessage());
e.printStackTrace();
}
return null;
}
代碼沒有拋出任何異常,所以我不知道發生了什麼。 響應對象之後的所有代碼都不起作用。它只是返回null,因爲只要我嘗試從response.getStatusCode()這樣的響應中獲得一個值,就好像代碼已經死了,而且只是返回null。
我只是試圖使用廣場的Okhttp庫和發生同樣的問題。這真的很奇怪。我不確定是什麼造成了這一點。 –
它會拋出異常嗎?如果它只是跳過它下面的所有內容,就一定會有例外。你在日誌中得到了什麼?你試圖打的網址是什麼? – DArkO