2 bxxo880917 bxxo880917 于 2016.02.17 09:18 提问

http请求报错:Bad chunk header
今天远程访问别的服务器的时候报了一个错误:Bad chunk header
就在EntityUtils.toString(response__input.getEntity())的时候
如果我加了一些限制条件,让他传过来的json数据少一点的话就没问题,数据多了就报这个错误,哪位大神帮我看一下:
代码如下:
public List getAllResultList() {
if (allResultList == null) {
User user = loginUser.getUser();
String mobile = user.getMobileNumber();

        List<AgentInfo> agentInfo = agentService.getAgentInfoByPhone(mobile);

        if (agentInfo.size() > 0) {
            try {
                String url_input = configService.getConfigValue(AGENT_INPUT_ACCOUNT_URL_ID);
                HttpGet get_input = null;

                JSONObject jsonObject = new JSONObject();   
                jsonObject.put("id", "");  
                jsonObject.put("bh", ""); 
                jsonObject.put("mno", "");
                jsonObject.put("mname", "");
                jsonObject.put("subno", "");   

                if (StringUtils.isNotBlank(agentInfo.get(0).getCode())) {
                    if (StringUtils.isNotBlank(agentInfo.get(0).getDepartmentId())) {
                        jsonObject.put("id", agentInfo.get(0).getDepartmentId());
                    }
                    jsonObject.put("bh", agentInfo.get(0).getCode());
                    if (StringUtils.isNotBlank(agentQuey)) {
                        if (StringUtils.isNumeric(agentQuey)) {
                            if (agentQuey.length()==15) {
                                jsonObject.put("mno", "'" + agentQuey + "'");
                            }else{
                                if (StringUtils.isNotBlank(agentQuey)) {
                                    //FIXME 商户号错误!
                                    return null;
                                }
                            }
                        }else{
                            jsonObject.put("mname", "'" + agentQuey + "'");
                        }
                    }
                }else{
                    if (StringUtils.isNotBlank(agentInfo.get(0).getDepartmentId())) {
                        jsonObject.put("id", agentInfo.get(0).getDepartmentId());
                    }
                    if (StringUtils.isNotBlank(salesCode)) {
                        jsonObject.put("bh", "'" + salesCode + "'");
                    }else{
                        if (StringUtils.isNotBlank(agentQuey)) {
                            if (StringUtils.isNumeric(agentQuey)) {
                                if (agentQuey.length()==15) {
                                    jsonObject.put("mno", "'" + agentQuey + "'");
                                }else{
                                    if (StringUtils.isNotBlank(agentQuey)) {
                                        //FIXME 商户号错误!
                                        return null;
                                    }
                                }
                            }else{
                                jsonObject.put("mname", "'" + agentQuey + "'");
                            }
                        }
                    }
                }

                get_input = new HttpGet(url_input+AGENT_INPUT_ACCOUNT_URL+"/"+java.net.URLEncoder.encode(jsonObject.toString(), "utf-8"));

                HttpClient client_input = HttpClientBuilder.create().build();
                HttpResponse response_input = client_input.execute(get_input);
                if(response_input.getStatusLine().getStatusCode() == 200){
                    String test = EntityUtils.toString(response_input.getEntity());
                    test = test.substring(test.indexOf("{"), test.length());
                    JSONObject object_input = JSONObject.fromObject(test);
                    System.out.println(object_input);
                    String code_input = object_input.getString("code");
                    if(Integer.parseInt(code_input) > 0){
                        FacesUtil.addErrorMessage(object_input.getString("msg"));
                        return null;
                    }else if(Integer.parseInt(code_input) == 0){
                        JSONArray jsonArray = (JSONArray) object_input.get("result");
                        List<Map<String,Object>> agentList = new ArrayList<Map<String,Object>>(jsonArray.size());

                        for (int m = 0; m < jsonArray.size(); m++){
                            String salesCode = ((JSONObject) jsonArray.get(m)).getString("ywyno");
                            String salesMan = ((JSONObject) jsonArray.get(m)).getString("ywtzr");

                            Map<String,Object> mapResult = new HashMap<String, Object>();
                            mapResult.put("salesCode", salesCode);
                            mapResult.put("salesMan", salesMan);
                            agentList.add(mapResult);
                        }

                        for (int i = 0; i < agentList.size(); i++)  //外循环是循环的次数
                        {
                            for (int j = agentList.size() - 1 ; j > i; j--)  //内循环是 外循环一次比较的次数
                            {

                                if (agentList.get(i).get("salesCode").equals(agentList.get(j).get("salesCode")))
                                {
                                    agentList.remove(j);
                                }

                            }
                        }
                        allResultList = agentList;
                        return allResultList;
                    }
                }else{
                    //FIXME 连接错误!
                    FacesUtil.addErrorMessage("对不起,连接错误,请稍后再试!");
                    return null;
                }
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }else{
            //FIXME 不是代理商跳转到申请商户页面
            FacesUtil.addErrorMessage("对不起,您不是代理商!");
            return null;
        }
        return null;
    }
    return allResultList;
}


报的错误是:
Hibernate: select this_.id as id47_0_, this_.code as code47_0_, this_.department_id as department3_47_0_, this_.name as name47_0_, this_.phone as phone47_0_ from agent_info this_ where this_.phone=?

org.apache.http.MalformedChunkCodingException: Bad chunk header
at org.apache.http.impl.io.ChunkedInputStream.getChunkSize(ChunkedInputStream.java:251)

at org.apache.http.impl.io.ChunkedInputStream.nextChunk(ChunkedInputStream.java:206)
at org.apache.http.impl.io.ChunkedInputStream.read(ChunkedInputStream.java:169)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:137)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.Reader.read(Reader.java:140)

at org.apache.http.util.EntityUtils.toString(EntityUtils.java:244)
at org.apache.http.util.EntityUtils.toString(EntityUtils.java:288)

1个回答

devmiao
devmiao   Ds   Rxr 2016.02.19 04:26
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
HTTP协议首部字段transfer-encoding与content-length差异
1. 什么问题最近在写一个http代理,主要作用是接收客户端(JMeter)的http请求报文,解析报文后加密,发送到服务器。接收服务器响应,拼装http响应报文,响应客户端(JMeter)。但是JMter一直提示 org.apache.http.MalformedChunkCodingException: Bad chunk header 2. 原因响应客户端(JMeter)http报文实体首
Unity luajit集成
集成ulua到unity后,尝试使用luajit编译字节码。 我们使用的是ngui官方github的分支. (Readme中最近的更新记录是2016-01-24) 其中使用的编译字节码环境如下 luajit: win, android 使用luajit 2.0.4stable luavm: mac使用luac编译, ios 使用luac (luavm)  luajit_ios: ios可
Http chunk方式传输数据
Http协议 响应格式: HTTP/1.1 200 OK\r\n [HeaderKey]:[空格][HeaderValue]\r\n [HeaderKey]:[空格][HeaderValue]\r\n [HeaderKey]:[空格][HeaderValue]\r\n ......这里省略很多 \r\n [数据区] 请求格式: GET/POST[空格][相对或者绝对路径][空格]H
Http chunk介绍
总结: HTTP 1.1时,Response要嘛通过Content-Length来指定要传输的内容大小,要嘛通过Transfer-Encoding: chunked来传输动态大小的内容,此时要求Response传输的内容要符合chunk encoding的规定。 从抓包的角度来说,两个请求如果HTTP 参数(Head和Body)都相同的话,是等价的,不管请求是从浏览器还是Java代码发出
memcached实战系列(三)memcached命令使用
memcached命令的使用,在这里我们最好了解一下命令的含义,对命令有一个大致的了解,在了解的基础上进行使用。这里的命名是常用的crud命令的演示。 1.1.1. memcached命令的格式 标准协议:Memcached所有的标准协议包含在对item执行命令过程中,一个item包含两行: 第一行:Key Flags ExpirationTime Bytes Key:Key 用于查找缓存
记一次http请求报400 badRequest
spring controller中请求中 如果方法的参数包含List 或者参数Bean中的属性类型有Date等的话 在请求的时候 因为前台传递参数 后台都是String,这个时候 会存在类型转换失败,就会报400 badRequest 但是请求的时候 服务器不报错 spring也不报错 因为根本就没请求到服务器。两种解决方法: 1.spring支持自定义类型转换器,自己写类型转化器类即可 2.
Memcached调试参数&常用命令
一、调试参数       -v +输出error/warning      -vv +输出命令/响应      -vvv +输出内部状态 存储命令   set/add/replace/append/prepend/cas、 读取命令   get=bget?/gets 删除命令   delete 计数命令   incr/decr 统计命
ERROR 微信安卓报http 400 Bad Request -Invalid Header name错误
今天出现微信安卓突然进不了网站,报 http 400 Bad Request -Invalid Header name错误 后面这个问题微信自处理了,没有找到问题出在哪里在。 网上查了一下,有人说是https协议没有问题。 微信已经出现过几次这样的坑了,下次微信还是突然有问题,其它没有问题的话,估计就是微信的坑了。
Http协议中关于Content-Length和Chunk
今天面试遇到一个问题,HTTP协议中 content-length与chunk的区别 以前学校Ajax的时候遇到过content-length的用法,但是chunk以前只是有点印象,今晚特地来了解一波。 参考链接:http://www.kafan.cn/edu/45992664.html 1、content-length是啥? content-length是消息传输实体的传输长度。要注意,
我们为什么需要Http Chunk
转载自:http://sobuhu.com/program/2014/01/02/why-we-need-httpchunk.html 目前来说Wikipidea和HTTP 1.1标准中Http Chunk都是指服务器端响应数据可以作为Chunked数据,主要作用就是不指定Http Headers中的Content-Length,客户端接收数据按照块接收,如果响应数据比较大,可以