分析http请求数据常见异常 您所在的位置:网站首页 服务器返回的数据异常 分析http请求数据常见异常

分析http请求数据常见异常

2024-07-09 09:48| 来源: 网络整理| 查看: 265

1.ConnectException连接超时

访问该地址超时,无法连接该服务器。 这种情况直接抓取该异常提醒即可。

2.SocketTimeoutException读取数据超时

注:可以用过URL类.getxxx方法获取url的主机名端口号等等(new URL(url)) 能连接服务器,但是与服务器交互时间超过请求最大连接时长。 这种情况需要对目标主机进行ping操作确定网络速度。(kB/s) ping ip -l 1000 -n 4 -w 60000 其中-l 1000 代表字节数默认为32,-n 4代表目标主机返回请求数量,-w 60000代表最大连接时间 使用Process类和Runtime.getRuntime().exec(命令字符串)模拟ping操作。 使用Process.inputstream()获取进程输入信息。 使用inputstreamReader(字节流,编码类型)将字节根据编码类型读取成字符。 使用BufferReader包装inputstreamReader可以提高效率。

Process proc = Runtime.getRuntime().exec("ping "+new URL(url).getHost()+" -l 10000 -n 4 -w 60000"); BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream(), Charset.forName("GBK"))); //命令行中的字符为gbk,所以要根据gbk类型来读取。解决打印在idea乱码问题 while (br.readLine()!=null){ System.out.println(br.readLine()); } 3.计算请求耗时和下载资源平均网速

请求耗时:请求前后获取系统时间相减即可。 System.currentTimeMillis获取系统时间(long) 平均网速:获取资源字符长度除于请求时间,获取大概网速。或者直接模拟ping也行。 获取资源字符长度:读取到的字符.getBytes().length(字节) 1字节 = 8bit比特 1kB/s = 8 kb/s 所以直接ping一定字节获取到时间,直接除于就获得了网速。 在这里插入图片描述 这样子最起码知道是大于32kB/s的(时间的1000就化作k了,代表千字节每秒)

4.后续问题 4.1bufferReader的readline函数读到空行时会停止读取,这样ping命令后面的统计信息就读取不到

解决方法请看这篇文章: BufferedReader踩坑



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有