HTTP获取Android Studio API级别23+

时间:2018-06-12 13:51:31

标签: java android-studio httprequest android-studio-3.0

你好! 我一直在互联网上搜索如何在Android Studio中制作Http Get应用程序,我发现你可以添加

compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.5'

到Android API级别23的依赖项>。或者

android{          
    useLibrary  'org.apache.http.legacy'
 }

适用于Android API等级23+ 然后我一直在获取Java代码

HttpClient httpClient= HttpClientBuilder.create().build();
HttpGet request= new HttpGet(your_url_to_read);
request.setHeader("k1", "value1");
request.setHeader("k2", "value2");
HttpResponse response= httpClient.execute(request);

System.out.println("Response Code : "+ response.getStatusLine().getStatusCode());
response.getStatusLine().getStatusCode());
//want to read the response content?
BufferedReader rd = new BufferedReader(
        new InputStreamReader(response.getEntity().getContent()));

StringBuffer result = new StringBuffer();
String line = "";
while ((line = rd.readLine()) != null) {
    result.append(line);
}
来自@ user404。我已成功导入下面的Java代码中的其他软件包,但在第1行Android Studio无法导入HttpClientBuilder。然后我进入了一个关于Android API级别23+ 的HttpClientBuilder的帖子(我忘了它在哪里,但它在StackOverflow上的某个地方)有人说你不能在Android API中导入HttpClietBuilder 23岁以上,因为谷歌删除了该功能。

所以现在我正在寻找一种方法来导入HttpClientBuilder软件包而不降级API级别,或者用Java创建带有标头的Http Get请求的全新方法,例如 "网址" http://www.something.com/random" HEADERS"授权":" 123456ABCDEF"" ,而不是网址中的参数,例如" http://www.something.com/random?authorization=123456ABCDEF"。

感谢正手回答

1 个答案:

答案 0 :(得分:0)

只是默认情况下已删除org.apache.http软件包,因此,如果您以API级别23为目标,则需要做一些额外的工作才能使这些工作正常进行。

useLibrary 'org.apache.http.legacy'添加到Gradle是解决此问题的一种方法,并且您可以定位到23。但是,您会得到旧的实现,这是有原因的。

手动添加最新版本的Apache HttpClient作为依赖项是一个不错的选择,无论您要定位的是哪个Android版本,它都可以继续工作。

同样,您可以一起使用另一个HTTP库,例如OkHttp。您还可以使用更高级别的库,例如Retrofit。