【问题标题】:Android - is it possible to run DefaultHTTPClient in the service?Android - 是否可以在服务中运行 DefaultHTTPClient?
【发布时间】:2012-12-14 18:42:49
【问题描述】:

我在 Android 服务中运行 DefaultHttpClient,但即使出现错误也无法得到任何结果。 是否可以?通过上网,我发现将HTTPClient作为服务,但我在服务中找不到调用HTTPClient。期待帮助。

【问题讨论】:

  • DefaultHttpClient 不知道它运行的上下文。你可以在你喜欢的地方运行它
  • 是的,可以发布您的相关代码,然后我们会尽力为您提供更多帮助

标签: android service httpclient


【解决方案1】:

您是否了解过如何在 Java 中使用 HTTP 客户端、发布和响应?这是一个基本示例,可能会在 AsyncTask doInBackground 函数中使用:

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(); }

【讨论】:

    【解决方案2】:

    是的,您可以在 Android 服务中“运行 DefaultHttpClient”。您可以通过多种方式将结果(响应代码、响应等)返回给您的其他组件(活动等)。

    您可以使用ResultReceiver

    或者,您可以使用 Otto 之类的服务总线(如果您愿意了解一些有关该总线的知识并进行设置,这会容易得多,而且它在许多地方都派上用场,而不仅仅是服务)。

    要真正提供帮助,您需要让问题更清楚一些。您的 Service 是否已经在工作并发出 HTTP 请求,您只需要将结果发送给其他组件,或者您根本无法让 DefaultHTTPClient 工作,服务与否?

    此外,如果您不想自己处理线程,您应该查看IntentService。它通常是“服务中的 HTTP 客户端”之类的理想选择。

    这个问题有更多的一般信息:Android - httpclient as a backgroundservice

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 2023-03-13
      相关资源
      最近更新 更多