您现在的位置是:首页 > 正文

java 请求超时处理_java请求超时处理

2024-02-01 06:44:02阅读 2

package com.it;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.net.HttpURLConnection;

import java.net.URL;

public class HttpConnProcessThread implements Runnable {

public boolean isStop = false;

public boolean readOK = false;

private static HttpURLConnection reqConnection = null;

public Thread readingThread;

private int readLen;

private String msg = null;

private String reqMethod;

private byte[] data;

/**

* ReadThread constructor comment.

*/

public HttpConnProcessThread(HttpURLConnection reqConnection, String msg, String reqMethod ) {

super();

this.reqConnection = reqConnection;

this.msg = msg;

this.reqMethod = reqMethod;

}

public void run() {

InputStream input = null;

OutputStream output = null;

try{

//reqConnection.connect();

output = reqConnection.getOutputStream();

if ("post".equalsIgnoreCase(reqMethod) && msg != null && msg.length() >0)

{

output.write(msg.getBytes());

output.close();

output = null;

}

// 处理HTTP响应的返回状态信息

int responseCode = reqConnection.getResponseCode();// 响应的代码if( responseCode != 200 )

System.out.println("connect failed! responseCode = " + responseCode + " msg=" + reqConnection.getResponseMessage());

input = reqConnection.getInputStream();

int len;

byte[] buf = new byte[2048];

readLen = 0;

// 读取inputStream

ByteArrayOutputStream outStream = new ByteArrayOutputStream();

while (!isStop)

{

len = input.read(buf);

if (len <= 0)

{

this.readOK = true;

input.close();

data=outStream.toByteArray();

break;

}

outStream.write(buf, 0, len);

readLen += len;

}

}

catch( IOException ie)

{}

catch(Exception e)

{}

finally

{

try{

reqConnection.disconnect();

if( input != null )

input.close();

if( output != null )

output.close();

//唤醒线程,跳出等待

wakeUp();

}catch(Exception e)

{

}

}

}

public String getMessage(){

if (!readOK) //超时

{

return "";

}

if (readLen <= 0) {

return "";

}

return new String(data, 0, readLen);

}

public void startUp() {

this.readingThread = new Thread(this);

readingThread.start();

}

//唤醒线程,不再等待

private synchronized void wakeUp() {

notifyAll();

}

public synchronized void waitForData(int timeout)

{

try {

//指定超时时间,等待connection响应

wait(timeout);

}

catch (Exception e)

{

}

if (!readOK)

{

isStop = true;

try{

//中断线程

if( readingThread.isAlive() )

readingThread.interrupt();

}catch(Exception e)

{

}

}

}

public static void main(String[] args) throws IOException{

String msg="";

URL reqUrl = new URL("http://127.0.0.1:8080/");

// 建立URLConnection连接

reqConnection = (HttpURLConnection) reqUrl.openConnection();

HttpConnProcessThread rec = new HttpConnProcessThread(reqConnection, msg, "post" );

// 如果顺利连接到并读完数据,则跳出等待,否则等待超时

rec.startUp();

rec.waitForData(2000);

String retMessage = rec.getMessage();

}

}

网站文章

  • 【maven】自定义构建maven的jar包依赖

    【maven】自定义构建maven的jar包依赖

    自己定义自己的maven的jar包依赖,本地版本。

    2024-02-01 06:43:55
  • 谷歌裁员1.2万人,CEO年薪达15亿,网友:“地表最强 CEO !”

    谷歌裁员1.2万人,CEO年薪达15亿,网友:“地表最强 CEO !”

    在竞争激烈的科技行业,大佬的薪酬往往是敏感话题。年初时,曾拿下 1.25 亿美元年终奖的“地表最强打工人”、苹果公司 CEO 库克,因降薪 40%的话题登上热搜,让大家倍感惊讶。(图源:彭博社截图)4...

    2024-02-01 06:43:24
  • Java 的引用

    在 Java 中引用可以分为强引用、软引用、弱引用、虚引用。

    2024-02-01 06:43:17
  • 医学计算机应用研究的意义,肝CT图像分析的临床与计算机应用研究

    摘要:目的:研究肝硬化CT肝实质形态分级与CT肝脾容积测量相结合对肝硬化CT定量诊断和肝切除术前肝储备功能评估的临床应用价值,并探索计算机自动测量的方法及其可行性. 方法:(1) 用CT机分别测量50...

    2024-02-01 06:43:10
  • springBoot中实现分页查询

    SpringBoot中实现条件分页查询

    2024-02-01 06:43:03
  • 阿里云ECS服务器挂载磁盘 热门推荐

    阿里云ECS服务器挂载磁盘 热门推荐

    买了阿里云的ECS云服务器,本机赠送20GB的磁盘,感觉不够用,又买了一块500GB的磁盘,本文就是记录怎么把这500GB的磁盘挂载上。 检查现在磁盘情况 我们可以看到买的那个500GB的磁盘没有出现,说明没有挂载上。 查看硬盘个数及分区 我们可以看到那块500GB的磁盘:/dev/xvdb 对这块500GB的硬盘进行分区 再次查看磁盘个数及分区 可以看到新的分区:/dev/xvd

    2024-02-01 06:42:34
  • 使用过滤器(Filter)解决乱码问题

    使用过滤器解决中文乱码问题一:常规方法 (1)Post提交方式1.第一种用法:使用xml配置文件//配置文件,在web.xml中写入如下代码 MyFilterConfig com.zzz.MyFilterConfig encoding UTF-8 //在Servlet中写入如下代码request.s

    2024-02-01 06:42:30
  • MIT CS6.006 最短路径专题

    MIT CS6.006 最短路径专题

    单源最短路径·找出一个带权有向图从起点到终点权重和最小的路径。几个变体:1.单目的地最短路径问题2.单结点对最短路径问题3.所有节点对最短路径问题一个隐藏的重要性质:两个节点之间的一条最短路径也包含着...

    2024-02-01 06:42:22
  • 在ubuntu环境下安装cpu版本的tensorflow

    环境要求:ubuntu14.04 64位、 因为要使用分布式深度学习平台,这里选择了tensorflow,我的电脑是ATI的显卡,所以这里记录的是安装cpu版本的tensorflow,其具体安装过程如下: (1)安装anaconda(这是一个很好的python编程的IDE,具体安装过程请参见其他资料); (2)安装conda环境。好处是conda环境能够把不同的python工程所需的依赖库隔...

    2024-02-01 06:41:51
  • Java接受blob类型图片_原生JS上传图片接收服务器端图片并且显示图片(主要描述blob类型)...

    Java接受blob类型图片_原生JS上传图片接收服务器端图片并且显示图片(主要描述blob类型)...

    1.了解后端处理图像的方式一:图片以独立文件的形式存储在服务器的指定文件夹中,再将路径存入数据库字段中二:将图片转换成blob,直接存储到数据库的 Image 类型字段中(这种方式负担很大不建议使用)...

    2024-02-01 06:41:44