HTTP请求类

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
public class HttpRequest {
/**
* 向指定URL发送GET方法的请求
*
* @param url
* 发送请求的URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return URL 所代表远程资源的响应结果
*/
public static String sendGet(String url, String param) {
String result = "";
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有的响应头字段
for (String key : map.keySet()) {
System.out.println(key + "--->" + map.get(key));
}
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
/**
* 向指定 URL 发送POST方法的请求
*
* @param url
* 发送请求的 URL
* @param param
* 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
*/
public static String sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
return result;
}
}

调用方法

 public static void main(String[] args) {
//发送 GET 请求
String s=HttpRequest.sendGet("http://localhost:6144/Home/RequestString", "key=123&v=456");
System.out.println(s); //发送 POST 请求
String sr=HttpRequest.sendPost("http://localhost:6144/Home/RequestPostString", "key=123&v=456");
System.out.println(sr);
}

最新文章

  1. java入门笔记001--java环境搭建
  2. Zookeeper学习笔记
  3. JavaScript对象的chapterI
  4. Windows集成认证全过程
  5. KnockoutJS 3.X API 第三章 计算监控属性(3) KO如何实现依赖追踪
  6. python的内存管理机制
  7. document模板
  8. Tomcat的错误 之 java.lang.IllegalArgumentException: Document base * does not exist
  9. yii cgridview 对生成的数据进行分页
  10. window.open和window.close的使用详解
  11. Spring Boot 分布式Session状态保存Redis
  12. php在客户端禁用cookie时让session不失效的解决方法
  13. 谈谈 TCP 的 TIME_WAIT
  14. 超详细的Web前端开发规范文档
  15. PHP获取文件后缀名
  16. (转载)常用正则表达式大全!(例如:匹配中文、匹配html)
  17. antd-design model 数据特点
  18. 如何用git把本地代码上传到github
  19. Python glob.md
  20. Json循环引用问题

热门文章

  1. 搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程
  2. 【LeetCode 14】最长公共前缀
  3. Sqli labs系列-less-1 详细篇
  4. 二:unittest框架配合selenium之xpath定位
  5. SAS市场研究应用介绍:组合/联合分析
  6. Java 反射获取私有方法
  7. Haproxy 基础详解及动静分离配置
  8. leetcode.字符串.125验证回文串-Java
  9. C# 设计模式 (一)
  10. APP接口测试和功能测试点