• HttpClient的使用今天遇到一个巨坑——HttpEntity内容取不出来


    在使用HttpPost httpPost = new HttpPost(postUrl);的post请求后,拿到返回的response,response返回200成功。

    到此没有任何问题。

    response返回的内容使用HttpEntity对象接收:

    //从response中拿返回数据对象
    HttpEntity entity = response.getEntity();

    // 打印响应内容
    resultStr = EntityUtils.toString(response.getEntity(), "UTF-8");
    System.out.println(resultStr);

    那么问题来了,他妈的,entity对象里的内容可以打印出来,里面是有东西的。但我要获取他的数据流:InputStream is = entity.getContent();//获取到返回的pdf文件流

    is输入流里面是个空的。。。。空的。。。。空的。。。。。

    我不信是空的,打印entity对象的内容长度:

    System.out.println("文件大约:"+(entity.getContentLength()/1024)+"K"); //打印出的是0k,我操,没道理啊
    
    System.out.println("type:" +entity.getContentType() + ",长度:" + entity.getContentLength()); //对象类型是application/pdf,长度是-1,也就是说还是空的。。。。。


    不阔能,他妈的上面明明打印出内容了,长度是空的,is输入流read()读数据也是-1空的,百度了很久也没查到原因


    解决办法找到了,但读HttpEntity里的内容 是空的有点搞不清为什么。好像是使用

    EntityUtils.toString(response.getEntity(), "UTF-8");这个方法,把这个方法去掉也一样啊,反正搞不清

    解决办法,想拿到response.getEntity();里的数据,只能用下面这个方法:

    //好像是EntityUtils只能使用一次,使用了EntityUtils.toByteArray()方法,上面就不能再使用EntityUtils.toString()方法了,不然EntityUtils.toByteArray()方法也拿不到数据
    byte
    [] byteData = EntityUtils.toByteArray(response.getEntity());//拿到返回结果字节流

    字节流是能拿到了,看来也只能处理字节流了

  • 相关阅读:
    解决Failure to transfer org.apache.maven.plugins:maven-surefire-plugin:pom:2.7
    java.net.ConnectException: Connection timed out: no further information
    private static final long serialVersionUID = 1L;
    判断input[type=file]上传文件格式
    toString()和toLocaleString()有什么区别
    js时间与时间戳互相转换
    获取手机校验码倒计时
    jq判断网页是在什么浏览器打开的
    使用navigator.userAgent.toLowerCase()判断移动端类型
    jq回车触发绑定点击事件
  • 原文地址:https://www.cnblogs.com/spll/p/11857835.html
Copyright © 2020-2023  润新知