[Android]Http通信,HttpService服务端通过getEntity获取HttpClient客户端Post上来的数据
16lz
2021-01-24
基于Apache公司的httpclient和httpservice的使用
先看httpservice对请求处理的RequestHandler方法
@Deprecatedpublic interface HttpRequestHandler { void handle(HttpRequest var1, HttpResponse var2, HttpContext var3) throws HttpException, IOException;}
想要httpservice对client端的请求作出处理,则需要实现上边的接口,重写方法
如下
@Override public void handle(HttpRequest httpRequest, HttpResponse httpResponse, HttpContext httpContext) throws HttpException, IOException { BasicHttpEntityEnclosingRequest httpPost = (BasicHttpEntityEnclosingRequest) httpRequest; InputStream is = httpPost.getEntity().getContent();
HttpRequest 只有一个getRequestLine方法,不能像response一样getEntity啊,这让服务端咋解析嘛。所以就进源码一通乱点,找到了这里用的BasicHttpEntityEnclosingRequest这个类
查看源码如下
public class BasicHttpEntityEnclosingRequest extends BasicHttpRequest implements HttpEntityEnclosingRequest {...}public class BasicHttpRequest extends AbstractHttpMessage implements HttpRequest {...}
最最重要的是,这个BasicHttpEntityEnclosingRequest 有getEntity方法
public HttpEntity getEntity() { throw new RuntimeException("Stub!"); } public void setEntity(HttpEntity entity) { throw new RuntimeException("Stub!"); }
所以把 HttpService把HttpClient传来的Post请求通过向下转型成BasicHttpEntityEnclosingRequest ,再调用getEntity,即可得到Post的请求流内容
我是在用客户端Post文件流给服务器时用到了该方法,完毕~
更多相关文章
- Android的消息框处理方法
- Android解压及打包system.img
- android 蓝牙开发 蓝牙 bluetoothsocket connect 经常出错 解决
- Android(安卓)Input流程
- Android(安卓)高通平台camera hal层调试方法和命令
- android 遍历assets下的文件
- android改变字体的颜色的三种方法
- Android(安卓)Studio加载字体
- android 屏幕分辨率获取,等比缩放,屏幕横竖屏设置,屏幕截取