2012-12-14 41 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

相关问题