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

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

于是google之。

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

一是使用HTTP4J。

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

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

稍作修改后的http4j代码。

二是使用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();

}

}

}

curl命令java_上curl java 模拟http请求相关推荐

  1. curl命令java_让 Bug 无处藏身,Java 线上问题排查思路、常用工具

    本文总结了一些常见的线上应急现象和对应排查步骤和工具.分享的主要目的是想让对线上问题接触少的同学有个预先认知,免得在遇到实际问题时手忙脚乱. 只不过这里先提示一下.在线上应急过程中要记住,只有一个总体 ...

  2. curl命令java_从Java调用curl命令

    curl -k -XPOST 'https://localhost:9200/myweb/myrep/**input_string**/_update' -d '{"doc":{& ...

  3. linux curl t上传文件,curl 命令行上传文件

    现在nginx大行其道,一般在机器上装个nginx 简答配置下就可以做upload用了.主要需求是开发那边需要运维这边投递一些app_log和一些history log.下面讲解下直接用curl命令上 ...

  4. java模拟HTTP请求(集合了网上搜来的各种)

    Java发送http请求 (get 与 post方法请求) Java发送http请求 (get 与post方法请求),以下代码经本人亲自调试可用!可以直接使用之. 注意:通过BufferedReade ...

  5. JAVA模拟HTTP请求中GET/POST方式

    package com.nxt.datacenter.utils;/*** 文件描述** @author: maomi* @date: 2019/5/31*/import java.io.Buffer ...

  6. Java模拟http请求

    Java实现http请求主要有3种方式:URLConnection.HttpURLConnection.HttpClient 一 URLConnection     抽象类,属于Java发送http请 ...

  7. Java模拟Http请求远程接口

    最近业务需要请求远程API接口,并返回相应的数据,同步到公司的服务器.因此编写了下面两个方法,主要是用Java.net.URL模拟http请求,主要写了POST和GET两个方法. 1.GET请求 /* ...

  8. Windows中使用curl命令报错curl post [globbing] unmatched close brace/bracket in column 67

    原因window的command.exe不支持单引号,所以要处理一下命令:先转义双引号,然后把单引号改为双引号, 比如,命令: curl -X POST --data '{"jsonrpc& ...

  9. 关于命令行上执行java命令的错误分析 - Could not find or load main class

    成功的安装了JDK和Eclipse后,在开发测试Java工程中,很少会遇到开发环境问题. 这都归功于Eclise通过工程(project)和包(package)把这些管理好. 但偶尔在命令行下编译和运 ...

最新文章

  1. js根据经纬度取随机附近经纬度
  2. iBatis.Net实现返回DataTable和DataSet对象
  3. nginx location配置详解
  4. 基于github和hexo搭建博客 本地hexo博客搭建
  5. python结束多线程_如何中断/停止/结束挂起的多线程python程序
  6. VOSviewer初步学习
  7. 鸿蒙电视rom,鸿蒙系统刷机包
  8. 什么是ROE、ROA和ROS?衡量企业盈利能力的比率有哪些?
  9. android 脚本运行程序,用android app运行脚本
  10. rpm 如何安装mysql_如何使用rpm安装MySQL
  11. C语言中结构体所占内存空间
  12. 之前用Delphi随手写的软键盘SoftKeyBoard
  13. Android多窗口模式(分屏模式)
  14. python爬今日头条组图_python 爬虫抓取今日头条街拍图片
  15. 数据结构 | 合并两个长度分别为m和n的有序表,最坏情况下需要比较m+n-1次
  16. 服务器e5系列和e5v4系列,至强E5-2600v4系列CPU一览表
  17. 市占率第一,是vivo的起点还是终点?
  18. 为什么要用企业邮箱?企业邮箱能给公司带来哪些好处?
  19. 2020/08/28 周末计划
  20. Java+MySQL实现药品销售管理系统

热门文章

  1. 服务器物理内存总是九十几,服务器物理内存使用率90以上
  2. 使用echarts时,鼠标首次移入屏幕会闪动,屏幕会出现滚动条
  3. html笔记(五)2D、3D、3D动画
  4. 关于DJANGO MODELS的个人理解和RELATED_NAME的使用
  5. BZOJ.1023.[SHOI2008]cactus仙人掌图(DP)
  6. Codeforces Round #365 (Div. 2) D. Mishka and Interesting sum (离线树状数组+前缀xor)
  7. 软件测试中条件覆盖,路径覆盖,语句覆盖,分支覆盖的区别
  8. JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能。...
  9. 关于eclipse的indigo版中文注释时字体太小的问题(转)
  10. PHP+七牛云存储上传图片代码片段