zoukankan      html  css  js  c++  java
  • 记一次NegativeArraySizeException

    问题描述:服务器接收后台返回的报文时,提示java.lang.NegativeArraySizeException

    分析:这种异常返回的原因,一般情况下没有报文提示为返回空报文,初步分析是响应报文流长度出了问题

    百度一下类似的情况:https://stackoverflow.com/questions/11207897/negative-array-size-exception

    节选部分内容:

    try{
         connection = (HttpConnection)Connector.open("http://someurl.xml",Connector.READ_WRITE);
         URLEncodedPostData postData = new URLEncodedPostData(URLEncodedPostData.DEFAULT_CHARSET, false);
         postData.append("username", "loginapi");
         postData.append("password", "myapilogin");
         postData.append("term", word);
    
         connection.setRequestMethod(HttpConnection.POST);
         connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
         connection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
         requestOut = connection.openOutputStream();
         requestOut.write(postData.getBytes());
         String contentType = connection.getHeaderField("Content-type"); 
         detailIn = connection.openInputStream();         
         int length = (int) connection.getLength();
         ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
         if(length > 0){//这里长度没有判定的情况下,byte array长度若为-1会产生错误
             byte info[] = new byte[length];
             int bytesRead = detailIn.read(info);
             while(bytesRead > 0) { 
                 baos.write(info, 0, bytesRead); 
                 bytesRead = detailIn.read(info); 
                 }
             baos.close();
             connection.close();
             requestSuceeded(baos.toByteArray(), contentType);
    
             detailIn.read(info);
         }
         else
         {
              System.out.println("Negative array size");
         }
               requestOut.close();
               detailIn.close();
               connection.close();
        }
    

      结论:HTTP服务器在返回响应报文的时候,没有进行content.length长度判断,按照常规流程响应了错误长度的报文,导致了接收方报文长度异常

    分享即成长
  • 相关阅读:
    pandas 筛选指定行或者列的数据
    数据相关性分析方法
    导入sklearn 报错,找不到相关模块
    特征探索经验
    python 中hive 取日期时间的方法
    云从科技 OCR任务 pixel-anchor 方法
    五种实现左中右自适应布局方法
    vscode vue 代码提示
    js Object.create 初探
    webpack 加载css 相对路径 ~
  • 原文地址:https://www.cnblogs.com/bobkingblog/p/11023620.html
Copyright © 2011-2022 走看看