【Android】【嘿!Java】Android工程、Java工程中通过HttpClient请求网络数据的不同方式

本文探讨了在Android和Java工程中使用HttpClient请求网络数据时遇到的类方法不一致问题。原因是Android SDK内置的HttpClient与独立的HttpComponents版本不同。解决方案包括在Java工程中使用HttpClient 4.3版本进行网络请求,并提供了Android工程中使用HttpClient的基本方法。
摘要由CSDN通过智能技术生成

问题描述

最近,写App时遇到了一个奇怪的问题:博主的App中需要向服务器以GET方式发送网络请求,之前博主没怎么写过这方面的代码,为了方便调试,就建了一个Java工程,用的是较新版本4.3的HttpComponents,调试好后将代码复制到Android里时,出现了如下图所示的报错,并提示“The method setConfig(RequestConfig) is undefined for the type HttpGet”,说明HttpGet没有setConfig()这个方法惊讶


为什么博主说奇怪呢,因为在Java工程里用到的有关网络请求的类来自下图这7个包里的,博主虽不知道HttpGet来自哪个包,但可以肯定它也是其中某个包的类。把代码复制到Android工程之前,博主已经将这6个包import进工程里,同一个类在Android工程和Java工程里拥有的方法怎么会不一样呢疑问



原因分析

博主偶然发现了问题的原因,就是当把Android里上述的7个包删掉后,复制过来的代码里有关网络请求的类(包括HttpGet)都没有报错,唯一报错的还是上述用到setConfig()方法的那行代码。这说明Android工程里,有关网络请求的类不是来自博主import进的7个包!博主在网上一搜,Android已经成功集成了HttpClient,所以开发人员在Android项目中可以直接使用HttpClient来想Web站点提交请求以及接受响应。

有人也遇到类似的问题http://bbs.byr.cn/#!article/MobileTerminalAT/11174,这个贴子里楼主说:Android SDK里自带了org.apache.http.client.methods.HttpGet这个类,HttpComponents4.3里也同样有org.apache.http.client.methods.HttpGet这个类,两个类的路径完全一样,但前者没有httpGet.setConfig()这个方法,而后者有。并且Android工程优先引用了Androi SDK里的类。

这就可以解释为什么同一个类在Android工程和Java工程里拥有的方法不一样,其实这个类来自不同的包,前者是Android SDK中的,后者是HttpComponents4.3里的。


解决办法

Java工程里通过HttpClient 4.3

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值