请求模拟

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请求 设置参数 | 学步园相关推荐

  1. java 校验文件类型_java如何判断一个文件的类型 | 学步园

    用文件头判断.直接读取文件的前几个字节. 常用文件的文件头如下: JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 ...

  2. java applet 文本框_Java Applet 文本框 TextField 小例 | 学步园

    一个Java Applet程序中必须有一个类是Applet类的子类,成为该子类是Java Applet的主类, 并且必须 是public class. Applet类是包java.applet中的一个 ...

  3. java调c++代码_Java中调用C++代码的实现 | 学步园

    JNI为  Java Native Interface 即Java本地接口,使用此种方式可以对C/C++代码进行调用,其在本质上是对C/C++生成的动态库进行调用而不是直接对C/C++代码进行调用 J ...

  4. java线程interrupt用法_Java线程中interrupt那点事 | 学步园

    1.先看一下例子程序: import java.io.IOException; import java.net.ServerSocket; import javax.rmi.CORBA.Tie; /* ...

  5. java servlet获取url参数_Java Servlet如何获取请求的参数值?

    ## Servlet如何获取请求的参数 ## > 使用Request常用API来获取参数 > 这里演示的表单的提交 > 用到的是`getParameter()`和`getParame ...

  6. java 模拟post上传文件_JAVA模拟HTTP post请求上传文件

    在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较 ...

  7. axios java 参数,vue.js axios发请求时,参数包括dto和一个flag, 后台如何接?

    1.vue.js使用axios向后台发请求. 传递参数中包含一个object,一个string. object到后台用javaBean接, String到后台用String接. 2.前台代码遇新是直朋 ...

  8. xssfcellstyle设置居中_java POI 单元格格式设置居中

    设置颜色,设置前景色 style.setFillForegroundColor(HSSFColor.HSSFColorPredefined.GREY_25_PERCENT.getIndex()); s ...

  9. java发送文件_java 模拟http发送文件和参数

    一.maven: org.apache.httpcomponents httpmime 4.5.3 二.工具类: import java.io.File; import java.util.Map; ...

最新文章

  1. R语言percent函数用百分比表示数值实战
  2. POJ-1094 Sorting it All Out
  3. 苹果证实收购Drive.ai自动驾驶汽车初创公司
  4. Oracle Spatial-元数据及SDO_GEOMETRY
  5. Java面向对象(2) —— 继承
  6. DedeCMS 提示信息! ----------dede_addonarticle
  7. java 循环效率_Java For循环效率测试
  8. 【前端】数字媒体技术专业主要课程及就业方向
  9. 指针以及二重指针的理解
  10. java itext 页边距_iText的用法
  11. 维克仓库管理软件 v3.4 工程网络版 是什么
  12. winform控件之notifyicon
  13. QQ空间相册如何批量导出
  14. Activity 审批流简单介绍
  15. 等一台聪明的炒菜机器人 炒热风口上的智能家居
  16. 带AI的俄罗斯方块源码
  17. [LUOGU] P3354 [IOI2005]Riv 河流
  18. linux如何配置java环境_linux虚拟机配置java环境
  19. Hibernate3 入门之Api,配置文件详解
  20. 【Python】实现给小仙女定时推送消息

热门文章

  1. 使用Chrome保存网页为mht文件
  2. System Center 2016 Data Protection Manager 部署手册
  3. 数据决策成共识 大数据产业期待点“数”成金
  4. 异常收集之:navicatdesignquery.sql.bak 系统找不到指定路径
  5. EverNote第三方API接口测试
  6. Java中接口定义成员变量
  7. Host 'localhost' is not allowed to connect to this MySQL server
  8. 携号转网可能只会叫好不叫座
  9. jsp session
  10. trufflesuite/truffle-hdwallet-provider