[Android]Http通信,HttpService服务端通过getEntity获取HttpClient客户端Post上来的数据

基于Apache公司的httpclient和httpservice的使用
先看httpservice对请求处理的RequestHandler方法

@Deprecated
public 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文件流给服务器时用到了该方法,完毕~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值