java httpget 设置参数_java 模拟HTTP doPost请求 设置参数 | 学步园
请求模拟
package org.zlex.commons.net;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Map;
import java.util.Properties;
/**
* 网络工具
*
* @author 梁栋
* @version 1.0
* @since 1.0
*/
public abstract class NetUtils {
public static final String CHARACTER_ENCODING = "UTF-8";
public static final String PATH_SIGN = "/";
public static final String METHOD_POST = "POST";
public static final String METHOD_GET = "GET";
public static final String CONTENT_TYPE = "Content-Type";
/**
* 以POST方式向指定地址发送数据包请求,并取得返回的数据包
*
* @param urlString
* @param requestData
* @return 返回数据包
* @throws Exception
*/
public static byte[] requestPost(String urlString, byte[] requestData)
throws Exception {
Properties requestProperties = new Properties();
requestProperties.setProperty(CONTENT_TYPE,
"application/octet-stream; charset=utf-8");
return requestPost(urlString, requestData, requestProperties);
}
/**
* 以POST方式向指定地址发送数据包请求,并取得返回的数据包
*
* @param urlString
* @param requestData
* @param requestProperties
* @return 返回数据包
* @throws Exception
*/
public static byte[] requestPost(String urlString, byte[] requestData,
Properties requestProperties) throws Exception {
byte[] responseData = null;
HttpURLConnection con = null;
try {
URL url = new URL(urlString);
con = (HttpURLConnection) url.openConnection();
if ((requestProperties != null) && (requestProperties.size() > 0)) {
for (Map.Entry entry : requestProperties
.entrySet()) {
String key = String.valueOf(entry.getKey());
String value = String.valueOf(entry.getValue());
con.setRequestProperty(key, value);
}
}
con.setRequestMethod(METHOD_POST); // 置为POST方法
con.setDoInput(true); // 开启输入流
con.setDoOutput(true); // 开启输出流
// 如果请求数据不为空,输出该数据。
if (requestData != null) {
DataOutputStream dos = new DataOutputStream(con
.getOutputStream());
dos.write(requestData);
dos.flush();
dos.close();
}
int length = con.getContentLength();
// 如果回复消息长度不为-1,读取该消息。
if (length != -1) {
DataInputStream dis = new DataInputStream(con.getInputStream());
responseData = new byte[length];
dis.readFully(responseData);
dis.close();
}
} catch (Exception e) {
throw e;
} finally {
if (con != null) {
con.disconnect();
con = null;
}
}
return responseData;
}
/**
* 以POST方式向指定地址提交表单
* arg0=urlencode(value0)&arg1=urlencode(value1)
*
* @param urlString
* @param formProperties
* @return 返回数据包
* @throws Exception
*/
public static byte[] requestPostForm(String urlString,
Properties formProperties) throws Exception {
return requestPostForm(urlString, formProperties, null);
}
/**
* 以POST方式向指定地址提交表单
* arg0=urlencode(value0)&arg1=urlencode(value1)
*
* @param urlString
* @param formProperties
* @param requestProperties
* @return 返回数据包
* @throws Exception
*/
public static byte[] requestPostForm(String urlString,
Properties formProperties, Properties requestProperties)
throws Exception {
requestProperties.setProperty(HttpUtils.CONTENT_TYPE,
"application/x-www-form-urlencoded");
StringBuilder sb = new StringBuilder();
if ((formProperties != null) && (formProperties.size() > 0)) {
for (Map.Entry entry : formProperties.entrySet()) {
String key = String.valueOf(entry.getKey());
String value = String.valueOf(entry.getValue());
sb.append(key);
sb.append("=");
sb.append(encode(value));
sb.append("&");
}
}
String str = sb.toString();
str = str.substring(0, (str.length() - 1)); // 截掉末尾字符&
return requestPost(urlString, str.getBytes(CHARACTER_ENCODING),
requestProperties);
}
/**
* url解码
*
* @param str
* @return 解码后的字符串,当异常时返回原始字符串。
*/
public static String decode(String url) {
try {
return URLDecoder.decode(url, CHARACTER_ENCODING);
} catch (UnsupportedEncodingException ex) {
return url;
}
}
/**
* url编码
*
* @param str
* @return 编码后的字符串,当异常时返回原始字符串。
*/
public static String encode(String url) {
try {
return URLEncoder.encode(url, CHARACTER_ENCODING);
} catch (UnsupportedEncodingException ex) {
return url;
}
}
}
/**
* 2008-12-26
*/
package org.zlex.commons.net;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Map;
import java.util.Properties;
/**
* 网络工具
*
* @author 梁栋
* @version 1.0
* @since 1.0
*/
public abstract class NetUtils {
public static final String CHARACTER_ENCODING = "UTF-8";
public static final String PATH_SIGN = "/";
public static final String METHOD_POST = "POST";
public static final String METHOD_GET = "GET";
public static final String CONTENT_TYPE = "Content-Type";
/**
* 以POST方式向指定地址发送数据包请求,并取得返回的数据包
*
* @param urlString
* @param requestData
* @return 返回数据包
* @throws Exception
*/
public static byte[] requestPost(String urlString, byte[] requestData)
throws Exception {
Properties requestProperties = new Properties();
requestProperties.setProperty(CONTENT_TYPE,
"application/octet-stream; charset=utf-8");
return requestPost(urlString, requestData, requestProperties);
}
/**
* 以POST方式向指定地址发送数据包请求,并取得返回的数据包
*
* @param urlString
* @param requestData
* @param requestProperties
* @return 返回数据包
* @throws Exception
*/
public static byte[] requestPost(String urlString, byte[] requestData,
Properties requestProperties) throws Exception {
byte[] responseData = null;
HttpURLConnection con = null;
try {
URL url = new URL(urlString);
con = (HttpURLConnection) url.openConnection();
if ((requestProperties != null) && (requestProperties.size() > 0)) {
for (Map.Entry entry : requestProperties
.entrySet()) {
String key = String.valueOf(entry.getKey());
String value = String.valueOf(entry.getValue());
con.setRequestProperty(key, value);
}
}
con.setRequestMethod(METHOD_POST); // 置为POST方法
con.setDoInput(true); // 开启输入流
con.setDoOutput(true); // 开启输出流
// 如果请求数据不为空,输出该数据。
if (requestData != null) {
DataOutputStream dos = new DataOutputStream(con
.getOutputStream());
dos.write(requestData);
dos.flush();
dos.close();
}
int length = con.getContentLength();
// 如果回复消息长度不为-1,读取该消息。
if (length != -1) {
DataInputStream dis = new DataInputStream(con.getInputStream());
responseData = new byte[length];
dis.readFully(responseData);
dis.close();
}
} catch (Exception e) {
throw e;
} finally {
if (con != null) {
con.disconnect();
con = null;
}
}
return responseData;
}
/**
* 以POST方式向指定地址提交表单
* arg0=urlencode(value0)&arg1=urlencode(value1)
*
* @param urlString
* @param formProperties
* @return 返回数据包
* @throws Exception
*/
public static byte[] requestPostForm(String urlString,
Properties formProperties) throws Exception {
return requestPostForm(urlString, formProperties, null);
}
/**
* 以POST方式向指定地址提交表单
* arg0=urlencode(value0)&arg1=urlencode(value1)
*
* @param urlString
* @param formProperties
* @param requestProperties
* @return 返回数据包
* @throws Exception
*/
public static byte[] requestPostForm(String urlString,
Properties formProperties, Properties requestProperties)
throws Exception {
requestProperties.setProperty(HttpUtils.CONTENT_TYPE,
"application/x-www-form-urlencoded");
StringBuilder sb = new StringBuilder();
if ((formProperties != null) && (formProperties.size() > 0)) {
for (Map.Entry entry : formProperties.entrySet()) {
String key = String.valueOf(entry.getKey());
String value = String.valueOf(entry.getValue());
sb.append(key);
sb.append("=");
sb.append(encode(value));
sb.append("&");
}
}
String str = sb.toString();
str = str.substring(0, (str.length() - 1)); // 截掉末尾字符&
return requestPost(urlString, str.getBytes(CHARACTER_ENCODING),
requestProperties);
}
/**
* url解码
*
* @param str
* @return 解码后的字符串,当异常时返回原始字符串。
*/
public static String decode(String url) {
try {
return URLDecoder.decode(url, CHARACTER_ENCODING);
} catch (UnsupportedEncodingException ex) {
return url;
}
}
/**
* url编码
*
* @param str
* @return 编码后的字符串,当异常时返回原始字符串。
*/
public static String encode(String url) {
try {
return URLEncoder.encode(url, CHARACTER_ENCODING);
} catch (UnsupportedEncodingException ex) {
return url;
}
}
}
注意上述requestPostForm()方法,是用来提交表单的。
测试用例
Java代码
/**
* 2009-8-21
*/
package org.zlex.commons.net;
import static org.junit.Assert.*;
import java.util.Properties;
import org.junit.Test;
/**
* 网络工具测试
*
* @author 梁栋
* @version 1.0
* @since 1.0
*/
public class NetUtilsTest {
/**
* Test method for
* {@link org.zlex.commons.net.NetUtils#requestPost(java.lang.String, byte[])}
* .
*/
@Test
public final void testRequestPostStringByteArray() throws Exception {
Properties requestProperties = new Properties();
// 模拟浏览器信息
requestProperties
.put(
"User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; TencentTraveler ; .NET CLR 1.1.4322)");
byte[] b = NetUtils.requestPost("http://localhost:8080/zlex/post.do",
"XML".getBytes());
System.err.println(new String(b, "utf-8"));
}
/**
* Test method for
* {@link org.zlex.commons.net.NetUtils#requestPostForm(java.lang.String, java.util.Properties)}
* .
*/
@Test
public final void testRequestPostForm() throws Exception {
Properties formProperties = new Properties();
formProperties.put("j_username", "Admin");
formProperties.put("j_password", "manage");
byte[] b = NetUtils.requestPostForm(
"http://localhost:8080/zlex/j_spring_security_check",
formProperties);
System.err.println(new String(b, "utf-8"));
}
}
最近做一接口,要通过JAVA类请求SERVLET ,DOPOST方法.
不知道怎么把我的参数传过去.在网上找了几个例子.
都不行.
方法一:
package com.3sfg.setvlet;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.httpclient.util.URIUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* HTTP工具箱
*
* @author leizhimin 2009-6-19 16:36:18
*/
public final class HttpTookit {
private static Log log = LogFactory.getLog(HttpTookit.class);
/**
* 执行一个HTTP GET请求,返回请求响应的HTML
*
* @param url 请求的URL地址
* @param queryString 请求的查询参数,可以为null
* @param charset 字符集
* @param pretty 是否美化
* @return 返回请求响应的HTML
*/
public static String doGet(String url, String queryString, String charset, boolean pretty) {
StringBuffer response = new StringBuffer();
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(url);
try {
if (StringUtils.isNotBlank(queryString))
//对get请求参数做了http请求默认编码,好像没有任何问题,汉字编码后,就成为%式样的字符串
method.setQueryString(URIUtil.encodeQuery(queryString));
client.executeMethod(method);
if (method.getStatusCode() == HttpStatus.SC_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset));
String line;
while ((line = reader.readLine()) != null) {
if (pretty)
response.append(line).append(System.getProperty("line.separator"));
else
response.append(line);
}
reader.close();
}
} catch (URIException e) {
log.error("执行HTTP Get请求时,编码查询字符串“" + queryString + "”发生异常!", e);
} catch (IOException e) {
log.error("执行HTTP Get请求" + url + "时,发生异常!", e);
} finally {
method.releaseConnection();
}
return response.toString();
}
/**
* 执行一个HTTP POST请求,返回请求响应的HTML
*
* @param url 请求的URL地址
* @param params 请求的查询参数,可以为null
* @param charset 字符集
* @param pretty 是否美化
* @return 返回请求响应的HTML
*/
public static String doPost(String url, Map params, String charset, boolean pretty) {
StringBuffer response = new StringBuffer();
HttpClient client = new HttpClient();
HttpMethod method = new PostMethod(url);
//设置Http Post数据
if (params != null) {
HttpMethodParams p = new HttpMethodParams();
for (Map.Entry entry : params.entrySet()) {
p.setParameter(entry.getKey(), entry.getValue());
}
p.setParameter("abc", "efg");
method.setParams(p);
}
try {
client.executeMethod(method);
if (method.getStatusCode() == HttpStatus.SC_OK) {
BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream(), charset));
String line;
while ((line = reader.readLine()) != null) {
if (pretty)
response.append(line).append(System.getProperty("line.separator"));
else
response.append(line);
}
reader.close();
}
} catch (IOException e) {
log.error("执行HTTP Post请求" + url + "时,发生异常!", e);
} finally {
method.releaseConnection();
}
return response.toString();
}
public static void main(String[] args) {
Map map = new HashMap();
map.put("parax", "123456");
String y = doGet("http://127.0.0.1:8080/AIRP/servletTest", "xx=00", "GBK", true);
String z = doPost("http://127.0.0.1:8080/AIRP/servletTest?", map, "GBK", false);
System.out.println(y);
System.out.println(z);
}
}
POST 方法 ,我在servletJ里,取不知任何参数,请求帮助.
感谢.
方法二:
private static String testPost(String MSG_ID,String MOBILE_NO,String CONTENT,
String SERVICE_ID,String PASS,String SP_CODE,String LINK_ID,
String FEE_TYPE,String FEE_CODE) throws IOException {
URL url = new URL("http://127.0.0.1:8080/AIRP/servletTest");
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "utf-8");
out.write("MSG_ID="+MSG_ID+"&MOBILE_NO="+MOBILE_NO+"&ACTION_ID=3"
+"&SERVICE_ID=99&PASS=asdfasd"
+"&SP_CODE=10625777&LINK_ID="); //向页面传递数据。post的关键所在!
// remember to clean up
out.flush();
out.close();
String sCurrentLine;
String sTotalString;
sCurrentLine = "";
sTotalString = "";
InputStream l_urlStream;
l_urlStream = connection.getInputStream();
// 传说中的三层包装阿!
BufferedReader l_reader = new BufferedReader(new InputStreamReader(
l_urlStream));
while ((sCurrentLine = l_reader.readLine()) != null) {
sTotalString += sCurrentLine + "/r/n";
}
System.out.println(sTotalString);
return sTotalString;
}
java httpget 设置参数_java 模拟HTTP doPost请求 设置参数 | 学步园相关推荐
- java 校验文件类型_java如何判断一个文件的类型 | 学步园
用文件头判断.直接读取文件的前几个字节. 常用文件的文件头如下: JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 ...
- java applet 文本框_Java Applet 文本框 TextField 小例 | 学步园
一个Java Applet程序中必须有一个类是Applet类的子类,成为该子类是Java Applet的主类, 并且必须 是public class. Applet类是包java.applet中的一个 ...
- java调c++代码_Java中调用C++代码的实现 | 学步园
JNI为 Java Native Interface 即Java本地接口,使用此种方式可以对C/C++代码进行调用,其在本质上是对C/C++生成的动态库进行调用而不是直接对C/C++代码进行调用 J ...
- java线程interrupt用法_Java线程中interrupt那点事 | 学步园
1.先看一下例子程序: import java.io.IOException; import java.net.ServerSocket; import javax.rmi.CORBA.Tie; /* ...
- java servlet获取url参数_Java Servlet如何获取请求的参数值?
## Servlet如何获取请求的参数 ## > 使用Request常用API来获取参数 > 这里演示的表单的提交 > 用到的是`getParameter()`和`getParame ...
- java 模拟post上传文件_JAVA模拟HTTP post请求上传文件
在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较 ...
- axios java 参数,vue.js axios发请求时,参数包括dto和一个flag, 后台如何接?
1.vue.js使用axios向后台发请求. 传递参数中包含一个object,一个string. object到后台用javaBean接, String到后台用String接. 2.前台代码遇新是直朋 ...
- xssfcellstyle设置居中_java POI 单元格格式设置居中
设置颜色,设置前景色 style.setFillForegroundColor(HSSFColor.HSSFColorPredefined.GREY_25_PERCENT.getIndex()); s ...
- java发送文件_java 模拟http发送文件和参数
一.maven: org.apache.httpcomponents httpmime 4.5.3 二.工具类: import java.io.File; import java.util.Map; ...
最新文章
- R语言percent函数用百分比表示数值实战
- POJ-1094 Sorting it All Out
- 苹果证实收购Drive.ai自动驾驶汽车初创公司
- Oracle Spatial-元数据及SDO_GEOMETRY
- Java面向对象(2) —— 继承
- DedeCMS 提示信息! ----------dede_addonarticle
- java 循环效率_Java For循环效率测试
- 【前端】数字媒体技术专业主要课程及就业方向
- 指针以及二重指针的理解
- java itext 页边距_iText的用法
- 维克仓库管理软件 v3.4 工程网络版 是什么
- winform控件之notifyicon
- QQ空间相册如何批量导出
- Activity 审批流简单介绍
- 等一台聪明的炒菜机器人 炒热风口上的智能家居
- 带AI的俄罗斯方块源码
- [LUOGU] P3354 [IOI2005]Riv 河流
- linux如何配置java环境_linux虚拟机配置java环境
- Hibernate3 入门之Api,配置文件详解
- 【Python】实现给小仙女定时推送消息
热门文章
- 使用Chrome保存网页为mht文件
- System Center 2016 Data Protection Manager 部署手册
- 数据决策成共识 大数据产业期待点“数”成金
- 异常收集之:navicatdesignquery.sql.bak 系统找不到指定路径
- EverNote第三方API接口测试
- Java中接口定义成员变量
- Host 'localhost' is not allowed to connect to this MySQL server
- 携号转网可能只会叫好不叫座
- jsp session
- trufflesuite/truffle-hdwallet-provider