Android上缺少HttpClientBuilder?

4

Apache已经弃用了DefaultHttpClient,但是似乎Android并非如此,详见此处 Deprecated Java HttpClient - How hard can it be?

导入

org.apache.httpcomponents:httpclient:4.3.5

替代

new DefaultHttpClient(); 

我现在想使用
HttpClient httpClient = HttpClientBuilder.create().build();

创建一个HTTP客户端。在Java项目中可以正常工作,但在Android项目中使用时,以下导入缺失。

import org.apache.http.impl.client.HttpClientBuilder;

while

HttpClient sendClient =  new DefaultHttpClient();

在Android中,它不被标记为已弃用,并且可以编译成功。

我不想再添加Apache httpclient一次(即使我这样做了,Android Studio也会将其排除在外)。

Android文档在此处http://developer.android.com/reference/android/net/http/AndroidHttpClient.html#newInstance(java.lang.String)建议使用:

AndroidHttpClient.new Instance(string)

如何“获得一个带有合理默认值的http客户端”?

有人知道在Android上创建HttpClient的正确方法以及userAgent字符串应该是什么吗?


基本上你只是想发送一个POST请求,还是你想通过HttpClient实现其他目标? - KOTIOS
我正在尝试创建一个长时间运行的 HTTP 请求,以从服务器接收推送通知。 - Oliver Hausler
我还不是很了解安卓的推送通知,但我认为你应该让安卓自行处理它们。不要开启一个服务来接收推送通知,这会浪费电池。我找到了一篇关于安卓推送通知的教程,希望对你有所帮助:https://parse.com/tutorials/android-push-notifications。 - Über Lem
谢谢@ÜberLem,但PushNotifications是完全不同的技术,缺点是它不能在iOS上工作。Android处于接收端,因此在电池寿命方面,套接字不应该是一个问题。如果有人持相反意见,请在此发表。 - Oliver Hausler
2个回答

6

谷歌安卓系统自带的Apache HttpClient 4.0版本非常陈旧(甚至还未推出BETA版本)。

如果您想在安卓系统上使用更新的Apache HttpClient API,建议使用官方的安卓移植版


这个答案是正确的,但最好使用不添加任何后缀的新端口:https://hc.apache.org/httpcomponents-client-4.5.x/android-port.html - Jehy

3
您需要在您的应用Gradle文件中添加此行代码。
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接