2012-12-14 37 views
0

我在Android服務中運行DefaultHttpClient,但即使出現錯誤,我也無法獲得任何結果。 這可能嗎?通過瀏覽,我找到了make HTTPClient作爲服務,但在服務中找不到調用HTTPClient。期待幫助。Android - 是否可以在服務中運行DefaultHTTPClient?

+0

DefaultHttpClient還沒有意識它運行的背景下。你可以在你喜歡的地方運行它 – Blackbelt

+0

是的,它可以發佈你的相關代碼,然後我們會盡力幫助你更多 –

回答

0

您是否看過如何在Java中使用HTTP客戶端,Post和Response?這是一個基本的例子,因爲人們可能在的AsyncTask doInBackground功能使用:在Android服務

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 


//in doInBackground() or other thread outside of main 
InputStream myStream; 
HttpClient httpClient = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost(url_select); 

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 

try { 
    nameValuePairs.add(new BasicNameValuePair("currentUser", currentUserVar)); 
    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
    HttpResponse response = httpClient.execute(httpPost); 

    myStream = response.getEntity().getContent(); 

} catch (ClientProtocolException e) { e.printStackTrace(); 
} catch (IOException e) { e.printStackTrace(); } 
0

是的,你可以在「運行DefaultHttpClient」。您可以通過多種方式將結果(響應代碼,響應等)返回給其他組件(活動等)。可以使用ResultReceiver

或者,您可以使用服務巴士,如Otto(如果您願意學習一些關於巴士並設置它的話,這會更容易,並且它在許多地方派上用場,而不僅僅是服務) 。

要真正幫助,雖然你需要使問題更清楚。您的服務是否已經在運行併發出HTTP請求,並且您只需要將結果提供給其他組件,或者您是否可以讓DefaultHTTPClient根本無法工作?

此外,如果您不想處理自己的線程處理,您應該查看IntentService。它通常是「服務中的HTTP客戶端」之類的優秀候選人。

這個問題有更廣泛的信息:Android - httpclient as a backgroundservice

相關問題