Java NegativeArraySizeException异常解决方案

 更新时间:2021年08月25日 14:18:17   作者:蜗牛coder  
这篇文章主要介绍了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长度判断,按照常规流程响应了错误长度的报文,导致了接收方报文长度异常

到此这篇关于Java NegativeArraySizeException异常解决方案的文章就介绍到这了,更多相关Java NegativeArraySizeException异常内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java实现人脸识别登录、注册等功能(最新完整版)

    Java实现人脸识别登录、注册等功能(最新完整版)

    这段时间由于学校实行静态化管理,寝室门和校门都是用了人脸识别的装置,本系列项目从设计到实现源码全部开源免费学习使用,对Java实现人脸识别登录、注册功能感兴趣的朋友一起看看吧
    2022-05-05
  • String与Blob互转和file文件与Blob互转方式

    String与Blob互转和file文件与Blob互转方式

    这篇文章主要介绍了String与Blob互转和file文件与Blob互转方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Spring Boot Security配置教程

    Spring Boot Security配置教程

    在本文里我们给大家分享了关于Spring Boot Security配置的相关步骤以及注意要点,需要的朋友们跟着操作下。
    2019-05-05
  • SpringBoot jackson提供对LocalDate的支持方式

    SpringBoot jackson提供对LocalDate的支持方式

    这篇文章主要介绍了SpringBoot jackson提供对LocalDate的支持方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Spring AOP详解面向切面编程思想

    Spring AOP详解面向切面编程思想

    Spring是一个广泛应用的框架,SpringAOP则是Spring提供的一个标准易用的aop框架,依托Spring的IOC容器,提供了极强的AOP扩展增强能力,对项目开发提供了极大地便利
    2022-06-06
  • 手把手教你k8s部署springboot服务

    手把手教你k8s部署springboot服务

    本文主要介绍了手把手教你k8s部署springboot服务,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程

    输出java进程的jstack信息示例分享 通过线程堆栈信息分析java线程

    通过ps到java进程号将进程的jstack信息输出。jstack信息是java进程的线程堆栈信息,通过该信息可以分析java的线程阻塞等问题。
    2014-01-01
  • java枚举的使用示例

    java枚举的使用示例

    我们在学习编程语言的时候都学过枚举,现在就具体来看看java中的枚举的使用
    2013-12-12
  • Mybatis的介绍、基本使用、高级使用

    Mybatis的介绍、基本使用、高级使用

    这篇文章主要介绍了Mybatis的介绍、基本使用、高级使用,Mybatis是一款半自动的ORM持久层框架,具有较高的SQL灵活性,如何使用看这篇就够了,需要的朋友可以参考下
    2023-03-03
  • Spring createBeanInstance实例化Bean

    Spring createBeanInstance实例化Bean

    这篇文章主要为大家介绍了Spring createBeanInstance实例化Bean源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论