300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java httpget 设置参数_java 模拟HTTP doPost请求 设置参数 | 学步园

java httpget 设置参数_java 模拟HTTP doPost请求 设置参数 | 学步园

时间:2021-08-22 19:02:06

相关推荐

java httpget 设置参数_java 模拟HTTP doPost请求 设置参数 | 学步园

请求模拟

package ;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.UnsupportedEncodingException;

import .HttpURLConnection;

import .URL;

import .URLDecoder;

import .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;

}

}

}

/**

* -12-26

*/

package ;

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.UnsupportedEncodingException;

import .HttpURLConnection;

import .URL;

import .URLDecoder;

import .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代码

/**

* -8-21

*/

package ;

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 Utils#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 Utils#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 mons.httpclient.HttpClient;

import mons.httpclient.HttpMethod;

import mons.httpclient.HttpStatus;

import mons.httpclient.URIException;

import mons.httpclient.methods.GetMethod;

import mons.httpclient.methods.PostMethod;

import mons.httpclient.params.HttpMethodParams;

import mons.httpclient.util.URIUtil;

import mons.lang.StringUtils;

import mons.logging.Log;

import mons.logging.LogFactory;

/**

* HTTP工具箱

*

* @author leizhimin -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;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。