作者:49897801g9Iq | 来源:互联网 | 2023-05-16 09:43
自API级别22以来,Android已经弃用了Apache模块,所以我的问题是,我如何使用,例如 HttpResponse
来自Apache库,而不是Android SDK?问题是两个包都是一样的.
但是,例如,HttpGet
没关系,因为它HttpGetHC4
在Apache中被调用.
1> vincent091..:
HttpClient方法已被弃用.您现在可以使用URLConnection,如您在此示例中所示:
private StringBuffer request(String urlString) {
// TODO Auto-generated method stub
StringBuffer chaine = new StringBuffer("");
try{
URL url = new URL(urlString);
HttpURLConnection cOnnection= (HttpURLConnection)url.openConnection();
connection.setRequestProperty("User-Agent", "");
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.connect();
InputStream inputStream = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(inputStream));
String line = "";
while ((line = rd.readLine()) != null) {
chaine.append(line);
}
}
catch (IOException e) {
// Writing exception to log
e.printStackTrace();
}
return chaine;
}
我希望这能帮助别人.
2> Jehy Support..:
使用Apache的模块没什么不好的.谷歌刚刚搞砸了,因为他们未能成功实现分叉.谷歌和阿帕奇的整合由杰西威尔逊监督 - 他在谷歌工作,弄乱了所有东西,然后在广场上工作时建立了自己的图书馆(OkHttp).这是一个非常难看的故事.
我建议不要使用遗留JAR文件,因为它包含旧版本的Apache库,没有改进和错误修正(这是一个非常古老的BETA之前的快照).正如您在Apache组件的官方页面上看到的,有一个全新的4.4版本,与所有Android版本兼容.它只需要在不同的命名空间下重新打包,以避免与旧版本冲突.
您只需从Maven添加依赖项(或从GitHub下载发行版):
dependencies {
compile "cz.msebera.android:httpclient:4.4.1.2"
}
然后替换org.apache.http
为cz.msebera.android.httpclient
,所以你的导入将如下所示:
import cz.msebera.android.httpclient.Header;
import cz.msebera.android.httpclient.HttpHost;
import cz.msebera.android.httpclient.HttpResponse;
是的,你可以继续使用Apache库而不浪费时间重写工作代码!
至于使用Apache组件和HttpURLConnection之间的区别,HttpURLConnection使用了响应缓存...而这就是全部.我不确定你真的想要它,而且你也可以自己实现它.
顺便说一句,我尝试了像HttpURLConnection这样的替代方案 - 这些方法甚至都不接近Apache的强大功能和简单性.
3> fattire..:
在Android Marshmallow(sdk 23)中,您可以添加:
useLibrary 'org.apache.http.legacy'
在该android {}
部分中build.gradle 作为变通方法.这似乎是谷歌自己的一些gms库所必需的!
我必须在buildsrcipt类路径'com.android.tools.build:gradle:1.3.1'中更改我的gradle版本.现在有效
4> mmlooloo..:
如果我是你,我不会使用HttpClient
因为:
Apache HTTP客户端在Eclair和Froyo上的错误更少.它是这些版本的最佳选择.
对于姜饼和更好的,HttpURLConnection是最好的选择.
参考
使用OKHttp或HttpUrlConnection.而且我也建议不要使用Apache库,因为它可能对Android不高效.
5> Vivi..:
我想你可以直接在项目中使用Apache库,而不是Android附带的那些(你可以通过这种方式获得更多控制 - 如果需要,可以使用旧的SDK版本进行编译).
在build.gradle中,添加以下行:
dependencies {
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
}
要防止出现警告,请同时添加以下行:
android {
-- YOUR EXISTING LINES --
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
}
}