Java利用Http 模拟POST、GET请求

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 HttpTry {

/**

* 向指向的url发送POST请求

*

* @param url

*            发送的URL

* @param param

*            请求参数,格式 param1=value1&param2=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.setDoInput(true);

conn.setDoOutput(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 {

try {

if (out != null) {

out.close();

}

if (in != null) {

in.close();

}

} catch (IOException ex) {

ex.printStackTrace();

}

}

return result;

}

/**

* 向指定URL发送GET 方法的请求

*

* @param url

*            发送请求的URL

* @param param

*            请求参数,格式 param1=value1&param2=value2

* @return

*/

public static String sendGet(String url, String param) {

String result = "";

BufferedReader in = null;

try {

String urlName = url + "?" + param;

URL realUrl = new URL(urlName);

// 打开与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)");

// 建立实际的连接

conn.connect();

// 获取所有相应头字段

Map<String, List<String>> map = conn.getHeaderFields();

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

System.out.println(key + "------>" + map.get(key));

}

// 定义BufferedReader输入流来读取URL的响应

in = new BufferedReader(

new InputStreamReader(conn.getInputStream()));

String line;

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

result += line;

}

} catch (Exception e) {

System.out.println("发送GET请求异常," + e);

e.printStackTrace();

}

// 关闭流

finally {

try {

if (in != null) {

in.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

return result;

}

public static void main(String[] args) {

// 发送 GET 请求

String s = HttpTry.sendGet("http://localhost:6144/Home/RequestString","key=123&v=456");

System.out.println(s);

// 发送 POST 请求

String sr = HttpTry.sendPost("http://localhost:6144/Home/RequestPostString","key=123&v=456");

System.out.println(sr);

}

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 23:06:06

Java利用Http 模拟POST、GET请求的相关文章

Java利用httpasyncclient进行异步HTTP请求

前段时间有个需求在springmvc mapping的url跳转前完成一个统计的业务.显然需要进行异步的处理,不然出错或者异常会影响到后面的网页跳转.异步的方式也就是非阻塞式的,当异步调用成功与否程序会接着往下执行,不必等到输入输出处理完毕才返回. 主要用到httpasyncclient-4.0.1.jar,httpclient-4.3.2.jar,httpcore-4.3.2.jar,httpcore-nio-4.3.2.jar,commons-logging-1.1.3.jar. java.

Java利用Http模拟表单提交

private static String sendPost(String url, NameValuePair[] params) { HttpClient client = new HttpClient(); // 请求超时 client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 15000); // 读取超时 client.getParams().setParameter(CoreConnection

利用fiddler模拟发送json数据的post请求

fiddler是调试利器,有许多好用的功能,这里简单的介绍一下利用fiddler模拟发送post请求的例子 先简单介绍一下失败的例子,最后给出正确的方法 在fiddler里边按照图上所示的设置好之后,点击右上角的execute,会报错 看下原因说的是后端不支持你提交数据的格式,也就是你发送的数据格式不对,可以添加请求头即可 如图设置 这样就ok了 利用fiddler的模拟post请求的时候,自己可以根据报错,修改就ok

利用charles模拟Http请求和响应

最新项目组服务端的童鞋们太不给力了,接口一直没有出来,为了方便开发.服务器的童鞋们定义好了http接口以及返回的json结构.然后客户端就可以利用json结构,模拟数据,然后顺利开发,最后等服务器接口完成的时候,再次做一下联合调试. 这样的方法,有专业的名字mock. 下面介绍下怎样利用mock http响应. 比如有个http接口 http://xx.oo.com/api/helloworld 返回的json结构如下. { "hello": "world" } 我

用java模拟发送post请求

package com.bytestream.practice.demo;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;

利用socket模拟http的混合表单上传(在一个请求中提交表单并上传多个文件)

在很多企业级应用中,我们都没法直接通过开发语言sdk包封装的http工具来模拟http复合表单(multipart/form-data),特别是在跨语言跨平台的编程过程中,其实实现方案并不复杂,只要你了解了http协议中复合表单的报文结构就很简单了: httpheader ------时间戳------ 表单参数1 ------时间戳------ 表单参数2 ------时间戳------ 文件1的描述+二进制信息 ------时间戳------ 文件2的描述+二进制信息 下面我们进一步以一段c

利用java servlet实现简单的web请求过滤和跳转

今日有两个微信web项目合并了,但是还有些链接指向废弃的项目,另外不想在服务器上运行两份相同web项目(1.影响性能.2.维护升级容易出错),因此决定写一个简单链接跳转的项目,spring的filter过滤器可以实现,但想想spring干这个有点大材小用,想到java的servlet可以支持通配符,因此用servlet写了一个简单的跳转程序,总共花了不到一小时的时间.废话少说上代码: 1 /** 2 * Servlet implementation class Default 3 */ 4 @W

利用反射模拟一个spring的内部工作原理

这个简单的案例是实行了登录和注册的功能,没有链接数据库. 在bean中id 是唯一的,id和name的区别在于id不能用特殊字符而name可以用特殊字符,比如:/-\.... 1 package com.obtk.reflect; 2 3 public class Logon { 4 /** 5 * 帐号密码长度大于六位字符就成功,否则失败! 6 * */ 7 public String select(String name, String pass) { 8 if (name.length()

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之前一直做使用Java语言开发,其丰富的组件类库使得开发效率那叫一个快呀!突然转来做JavaScript一时间还有点儿不适应(快半年了),不过自从看见那么多漂亮的网站和对JavaScript接触的越来越多,也发现了其中的一些乐趣.正如自己一直坚信的那样,编程语言仅仅是工具,重要的是编程思想!使用Jav