2011-09-10 58 views
-2

我得到一個ClassCastException:我使用Apache libray從下面的代碼Android的HTTP類轉換異常

try { 
     se = new StringEntity(myJson); 
    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return false; 
    } 
    httppost.setEntity(se); 
    httppost.setHeader("Accept", "application/json"); 
    httppost.setHeader("Content-type", "application/json"); 

    ResponseHandler responseHandler = new BasicResponseHandler(); 
    try { 
     HttpResponse response = httpclient.execute(httppost, responseHandler); 
    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return false; 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     return false; 
    } 

java.lang.String中。有沒有我看不到的演員陣容,對事業的任何幫助表示讚賞。可能是setEntity(se)調用?

+1

請發佈堆棧跟蹤;我們沒有ESP :) –

回答

3

如果你可以發佈整個堆棧跟蹤將是非常有幫助的 - 否則我們會進行猜測。

這就是說,行我想看看是:

HttpResponse response = httpclient.execute(httppost, responseHandler); 

它看起來像httpClient.execute(HttpUriRequest, ResponseHandler)返回類型取決於ResponseHandler所的類型,你傳遞既然你傳遞一個BasicResponseHandler的實例,它將響應正文作爲字符串返回,我猜測方法調用將返回java.lang.String的實例。

你可以嘗試改變該行是這樣的:

String responseBody = httpClient.execute(httppost, responseHandler); 

但是,這只是一個猜測,因爲我們沒有一個完整的堆棧跟蹤。

+0

這裏簡單的回答了一個問題,提示問題出在 – ron

+0

ResponseHandler responseHandler = new BasicResponseHandler();事實證明這是正確的。出於某種原因,我的答案被撤回之前,我可以勾選它!爲什麼如果我點擊返回鍵,這個評論框會提前觸發? – ron

+1

似乎是正確的。我有同樣的問題,只是刪除了responseHandler,它返回了一個HttpResponse對象 –