package ln;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.util.HashMap;

import java.util.List;

import java.util.Map;/**

* 用于模拟HTTP请求中GET/POST方式

* @author landa

**/

public classHttpUtils {/**

* 发送GET请求

*

* @param url

* 目的地址

* @param parameters

* 请求参数,Map类型。

* @return 远程响应结果*/

public static String sendGet(String url, Mapparameters) {

String result="";

BufferedReaderin = null;//读取响应输入流

StringBuffer sb = new StringBuffer();//存储参数

String params = "";//编码之后的参数

try{//编码请求参数

if(parameters.size()==1){for(String name:parameters.keySet()){

sb.append(name).append("=").append(

java.net.URLEncoder.encode(parameters.get(name),"UTF-8"));

}params=sb.toString();

}else{for(String name : parameters.keySet()) {

sb.append(name).append("=").append(

java.net.URLEncoder.encode(parameters.get(name),"UTF-8")).append("&");

}

String temp_params=sb.toString();params = temp_params.substring(0, temp_params.length() - 1);

}

String full_url= url + "?" + params;

System.out.println(full_url);//创建URL对象

java.net.URL connURL = newjava.net.URL(full_url);//打开URL连接

java.net.HttpURLConnection httpConn =(java.net.HttpURLConnection) connURL

.openConnection();//设置通用属性

httpConn.setRequestProperty("Accept", "*/*");

httpConn.setRequestProperty("Connection", "Keep-Alive");

httpConn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");//建立实际的连接

httpConn.connect();//响应头部获取

Map> headers =httpConn.getHeaderFields();//遍历所有的响应头字段

for(String key : headers.keySet()) {

System.out.println(key + "\t:\t" + headers.get(key));

}//定义BufferedReader输入流来读取URL的响应,并设置编码方式

in = new BufferedReader(newInputStreamReader(httpConn

.getInputStream(),"UTF-8"));

String line;//读取返回的内容

while ((line = in.readLine()) != null) {

result+=line;

}

}catch(Exception e) {

e.printStackTrace();

}finally{try{if (in != null) {in.close();

}

}catch(IOException ex) {

ex.printStackTrace();

}

}returnresult ;

}/**

* 发送POST请求

*

* @param url

* 目的地址

* @param parameters

* 请求参数,Map类型。

* @return 远程响应结果*/

public static String sendPost(String url, Mapparameters) {

String result= "";//返回的结果

BufferedReader in = null;//读取响应输入流

PrintWriter out = null;

StringBuffer sb= new StringBuffer();//处理请求参数

String params = "";//编码之后的参数

try{//编码请求参数

if (parameters.size() == 1) {for(String name : parameters.keySet()) {

sb.append(name).append("=").append(

java.net.URLEncoder.encode(parameters.get(name),"UTF-8"));

}params =sb.toString();

}else{for(String name : parameters.keySet()) {

sb.append(name).append("=").append(

java.net.URLEncoder.encode(parameters.get(name),"UTF-8")).append("&");

}

String temp_params=sb.toString();params = temp_params.substring(0, temp_params.length() - 1);

}//创建URL对象

java.net.URL connURL = newjava.net.URL(url);//打开URL连接

java.net.HttpURLConnection httpConn =(java.net.HttpURLConnection) connURL

.openConnection();//设置通用属性

httpConn.setRequestProperty("Accept", "*/*");

httpConn.setRequestProperty("Connection", "Keep-Alive");

httpConn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");//设置POST方式

httpConn.setDoInput(true);

httpConn.setDoOutput(true);//获取HttpURLConnection对象对应的输出流

out = newPrintWriter(httpConn.getOutputStream());//发送请求参数

out.write(params);//flush输出流的缓冲

out.flush();//定义BufferedReader输入流来读取URL的响应,设置编码方式

in = new BufferedReader(newInputStreamReader(httpConn

.getInputStream(),"UTF-8"));

String line;//读取返回的内容

while ((line = in.readLine()) != null) {

result+=line;

}

}catch(Exception e) {

e.printStackTrace();

}finally{try{if (out != null) {out.close();

}if (in != null) {in.close();

}

}catch(IOException ex) {

ex.printStackTrace();

}

}returnresult;

}/**

* 主函数,测试请求

*

* @param args*/

public static voidmain(String[] args) {

Map parameters = new HashMap();

parameters.put("name", "sarin");

String result=sendGet("http://www.baidu.com", parameters);

System.out.println(result);

}

}

java http请求 工具类_java模拟http请求调用远程接口工具类相关推荐

  1. Java爬虫(二)-- httpClient模拟Http请求+jsoup页面解析

    博客 学院 下载 GitChat TinyMind 论坛 APP 问答 商城 VIP会员 活动 招聘 ITeye 写博客 发Chat 传资源 登录注册 原 Java爬虫(二)-- httpClient ...

  2. WebService工具类调用远程接口服务时java.io.IOException: Server returned HTTP response code: 500 for URL XXX

    问题描述:在本地测试时,使用个人封装的Webservice代码工具类调用远程接口服务时,一切正常.但是一旦将该代码放到一个已有项目的中使用时,就会出现如下所示的错误提示 java.io.IOExcep ...

  3. 【Python养成】:案例(设计三维向量类、实现向量的加法、减法以及向量与标量的乘法和除法运算、编写自定义类,模拟内置集、编写自定义类,模拟双端队列。)

    学习内容:设计三维向量类.实现向量的加法.减法以及向量与标量的乘法和除法运算 设计三维向量类.实现向量的加法.减法以及向量与标量的乘法和除法运算 实验代码: class Vector_3D:def _ ...

  4. java调用远程 接口_java通过url调用远程接口返回json数据

    java通过url调用远程接口返回json数据,有用户名和密码验证, 转自 https://blog.csdn.net/wanglong1990421/article/details/78815856 ...

  5. java post json请求_java模拟post请求发送json

    java模拟post请求发送json,用两种方式实现,第一种是HttpURLConnection发送post请求,第二种是使用httpclient模拟post请求. 方法一: public stati ...

  6. java如何模拟请求_单元测试如何模拟用户请求

    python web自动化测试设计构工具书 40.9元 包邮 (需用券) 去购买 > 错误 正当我高高兴兴写完后台c层的测试代码准备提交时,测试机器人报了很多401错误,把代码拉下来一看,原来当 ...

  7. java反射出抽象类的实现类_java利用反射模式调用实现类

    本文主讲,java利用反射模式调用接口的实现类.抽象类的继承子类.下面请听一一道来 1.第一步在src下创建com.newer.reflex包 2.在com.newer.reflex包下面建立IRef ...

  8. java保护型数据成员_Java基础知识笔记第四章:类和对象

    编程语言的几个发展阶段 面向机器语言 面向过程语言 面向对象语言:封装.继承.多态 类 类声明 classPerson{ ....... }class植物{ ....... } 类体 类使用类体来描述 ...

  9. java同步转化成异步_Java 如何把异步调用模拟成同步调用

    在某些时候,须要把异步调用模拟成同步调用的形态.例如,基于基于异步通讯的客户端须要同步调用. :-)异步 要实现这个转换,能够有多种实现方法:this 1.很经常使用的方法,应用循环机制:spa bo ...

最新文章

  1. R语言readLines函数、n.readLines函数、readline函数读取文本文件实战
  2. 无人出租今起免费坐,只恨不是长沙人
  3. mysql 数据库系统开发_MySQL------数据库系统概述
  4. python可以使用二维元组吗_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)...
  5. Python对数列进行全排列
  6. Vue + Nodejs + Express 解决跨域的问题
  7. QT每日一练day13:QFileDialog文件浏览框
  8. 通俗认识理解OpenAI Five
  9. CF369E Valera and Queries
  10. 解决使用七牛CDN导致AJAX评论报错{“ERROR”:”GET FROM IMAGE SOURCE FAILED: E405″}
  11. VASSISTX在vs里面应用的快捷键
  12. workman定时器使用
  13. cannot import name ‘mean_squared_erro‘ from ‘sklearn.metrics‘
  14. 多实践、少扯淡,生死看淡,不服就干
  15. 微服务架构-实现技术之六大基础组件:服务通信+事件驱动+负载均衡+服务路由+API网关+配置管理
  16. 互联网金融学习总结(4)——大数据风控的九种维度
  17. Wine Mono 环境安装并运行.Net WPF
  18. 大长今》及主题歌五种版本欣赏
  19. 关于springAOP的织入
  20. 技术硬实力+服务软实力,声网助力出海企业破解水土不服难题

热门文章

  1. bzoj4515 [Sdoi2016]游戏 标记永久线段树+链剖+差分
  2. 2017.9.8 仙人掌图 失败总结
  3. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(3) - 8086/16位指令前缀
  4. phpstudy_pro MySQL启动失败的原因
  5. Win知识 - 程序是怎样跑起来的——系统调用和高级编程语言的移植性
  6. STL源码学习之空间配置
  7. 三维空间刚体运动5:详解SLAM中显示机器人运动轨迹及相机位姿(原理流程)
  8. java打印日历至Excel_2013日历打印_Excel2013,如何实现点击单元格就出现日历,操作者......
  9. 移动GPU三种主流架构优缺点浅析
  10. vr的延迟和渲染效率优化与Nvidia VRWorks