上curl java 模拟http请求

        最近,我的项目要求java模拟http请求,获得dns解决 tcp处理过的信息特定的连接。

java api提供urlConnection apache提供的httpClient都不能胜任该需求,二次开发太费时间。

于是google之。

最后 得出两种解决的方法:

一是使用HTTP4J。

该开源项目使用socket方式。模拟请求。记录时间戳,基本满足需求。对于header自己定义等细节,可在此基础上比較方便的二次开发。

仅仅是。当中有一些bug须要修复, 如https链接时获取不到ssl时间等。使用该项目的风险在于不稳定和不可控性。


稍作修改后的http4j代码。

http://download.csdn.net/detail/zhongyuan_1990/8837281


二是使用curl。

google之,curl本身没有对java的支持。由第三份提供了binding用来使用curl。可能是笔者能力有限,未能成功在windows编译它。

google也没有找到相关javacurl.dll的资源下 载。

最后不得不放弃。选择使用命令行的模式操作curl。

java 使用curl命令 demo

package com.netbirdtech.libcurl.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class test {
	public static void main(String[] args) {
		String []cmds = {"curl", "-i", "-w", "状态%{http_code};DNS时间%{time_namelookup};"
				+ "等待时间%{time_pretransfer}TCP 连接%{time_connect};发出请求%{time_starttransfer};"
				+ "总时间%{time_total}","http://www.baidu.com"};
		ProcessBuilder pb=new ProcessBuilder(cmds);
		pb.redirectErrorStream(true);
		Process p;
		try {
			p = pb.start();
			BufferedReader br=null;
			String line=null;
			
			br=new BufferedReader(new InputStreamReader(p.getInputStream()));
			while((line=br.readLine())!=null){
					System.out.println("\t"+line);
			}
			br.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值