向网络发送GET/POST请求参数
2017-02-10 13:28
531 查看
使用GET方法发送请求
[java] view plain copy print?private static boolean sendGETRequest (String path,
Map<String, String> params) throws Exception{
//发送地http://192.168.100.91:8080/videoService/login?username=abc&password=123
// StringBuilder是用来组拼请求地址和参数
StringBuilder sb = new StringBuilder();
sb.append(path).append(”?”);
if(params!=null &¶ms.size()!=0){
for (Map.Entry<String, String> entry : params.entrySet()) {
//如果请求参数中有中文,需要进行URLEncoder编码
sb.append(entry.getKey()).append(”=”).append(URLEncoder.encode(entry.getValue(), “utf-8”));
sb.append(”&”);
}
sb.deleteCharAt(sb.length()-1);
}
URL url = new URL(sb.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod(”GET”);
if(conn.getResponseCode()==200){
return true;
}
return false;
}
使用POST方法发送请求
我们先从IE浏览器中使用POST方法发送一次:(下面内容可以用HttpWatch看到)
POST /videoService/login HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/QVOD,
application/QVOD, */*
Referer: http://192.168.100.91:8080/videoService/login.jsp
Accept-Language: zh-CN,en;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)
Content-Type: application/x-www-form-urlencoded//POST请求这个一定要设置
Accept-Encoding: gzip, deflate
Host: 192.168.100.91:8080
Content-Length: 26//还有发送内容长度也要设置
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=7E1435CB8A071D07A430453250348C41
username=asd&password=1234//这里是请求体部分,一共26个字节,与Content-Length长度一样
[java] view plain copy print?private static boolean sendPOSTRequest(String path,
Map<String, String> params) throws Exception{
// StringBuilder是用来组拼请求参数
StringBuilder sb = new StringBuilder();
if(params!=null &¶ms.size()!=0){
for (Map.Entry<String, String> entry : params.entrySet()) {
sb.append(entry.getKey()).append(”=”).append(URLEncoder.encode(entry.getValue(), “utf-8”));
sb.append(”&”);
}
sb.deleteCharAt(sb.length()-1);
}
// entity为请求体部分内容
//如果有中文则以UTF-8编码为username=%E4%B8%AD%E5%9B%BD&password=123
byte[] entity = sb.toString().getBytes();
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod(”POST”);
//要向外输出数据,要设置这个
conn.setDoOutput(true);
conn.setRequestProperty(”Content-Type”, “application/x-www-form-urlencoded”);
conn.setRequestProperty(”Content-Length”, entity.length+“”);
OutputStream os = conn.getOutputStream();
//以POST方式发送请求体
os.write(entity);
if(conn.getResponseCode()==200){
return true;
}
return false;
}
以Android集成的HttpClient框架来发送
[java] view plain copy print?private static boolean sendPOSTRequestHttpClient(String path,
Map<String, String> params) throws Exception{
//封装请求参数
List<NameValuePair> pair = new ArrayList<NameValuePair>();
if(params!=null&& !params.isEmpty()){
for(Map.Entry<String, String> entry:params.entrySet()){
pair.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
}
//把请求参数变成请求体部分
UrlEncodedFormEntity uee = new UrlEncodedFormEntity(pair, “utf-8”);
//使用HttpPost对象设置发送的URL路径
HttpPost post = new HttpPost(path);
//发送请求体
post.setEntity(uee);
//创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息
DefaultHttpClient dhc = new DefaultHttpClient();
HttpResponse response = dhc.execute(post);
if(response.getStatusLine().getStatusCode()==200){
Log.i(”http”, “httpclient”);
return true;
}
return false;
}
转自:http://www.zuidaima.com/share/1550463555308544.htm
在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getParameterMap()方法遍历得到,不论GET或POST都可以通过getRequestURL+getParameterMap()来得到请求完整路径
[java] view plain copy print?
package com.zuidaima
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class GetParams extends HttpServlet {
private static final long serialVersionUID = 1L;
public GetParams() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
writer.println(”GET ” + request.getRequestURL() + “ ”
+ request.getQueryString());
Map<String, String[]> params = request.getParameterMap();
String queryString = ”“;
for (String key : params.keySet()) {
String[] values = params.get(key);
for (int i = 0; i < values.length; i++) {
String value = values[i];
queryString += key + ”=” + value + “&”;
}
}
// 去掉最后一个空格
queryString = queryString.substring(0, queryString.length() - 1);
writer.println(”GET ” + request.getRequestURL() + “ ” + queryString);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
Map<String, String[]> params = request.getParameterMap();
String queryString = ”“;
for (String key : params.keySet()) {
String[] values = params.get(key);
for (int i = 0; i < values.length; i++) {
String value = values[i];
queryString += key + ”=” + value + “&”;
}
}
// 去掉最后一个空格
queryString = queryString.substring(0, queryString.length() - 1);
writer.println(”POST ” + request.getRequestURL() + “ ” + queryString);
}
}
[java] view plain copy print?private static boolean sendGETRequest (String path,
Map<String, String> params) throws Exception{
//发送地http://192.168.100.91:8080/videoService/login?username=abc&password=123
// StringBuilder是用来组拼请求地址和参数
StringBuilder sb = new StringBuilder();
sb.append(path).append(”?”);
if(params!=null &¶ms.size()!=0){
for (Map.Entry<String, String> entry : params.entrySet()) {
//如果请求参数中有中文,需要进行URLEncoder编码
sb.append(entry.getKey()).append(”=”).append(URLEncoder.encode(entry.getValue(), “utf-8”));
sb.append(”&”);
}
sb.deleteCharAt(sb.length()-1);
}
URL url = new URL(sb.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod(”GET”);
if(conn.getResponseCode()==200){
return true;
}
return false;
}
private static boolean sendGETRequest (String path, Map<String, String> params) throws Exception{ //发送地http://192.168.100.91:8080/videoService/login?username=abc&password=123 // StringBuilder是用来组拼请求地址和参数 StringBuilder sb = new StringBuilder(); sb.append(path).append("?"); if(params!=null &¶ms.size()!=0){ for (Map.Entry<String, String> entry : params.entrySet()) { //如果请求参数中有中文,需要进行URLEncoder编码 sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8")); sb.append("&"); } sb.deleteCharAt(sb.length()-1); } URL url = new URL(sb.toString()); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("GET"); if(conn.getResponseCode()==200){ return true; } return false; }
使用POST方法发送请求
我们先从IE浏览器中使用POST方法发送一次:(下面内容可以用HttpWatch看到)
POST /videoService/login HTTP/1.1
Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/QVOD,
application/QVOD, */*
Referer: http://192.168.100.91:8080/videoService/login.jsp
Accept-Language: zh-CN,en;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; GTB6.5; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)
Content-Type: application/x-www-form-urlencoded//POST请求这个一定要设置
Accept-Encoding: gzip, deflate
Host: 192.168.100.91:8080
Content-Length: 26//还有发送内容长度也要设置
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=7E1435CB8A071D07A430453250348C41
username=asd&password=1234//这里是请求体部分,一共26个字节,与Content-Length长度一样
[java] view plain copy print?private static boolean sendPOSTRequest(String path,
Map<String, String> params) throws Exception{
// StringBuilder是用来组拼请求参数
StringBuilder sb = new StringBuilder();
if(params!=null &¶ms.size()!=0){
for (Map.Entry<String, String> entry : params.entrySet()) {
sb.append(entry.getKey()).append(”=”).append(URLEncoder.encode(entry.getValue(), “utf-8”));
sb.append(”&”);
}
sb.deleteCharAt(sb.length()-1);
}
// entity为请求体部分内容
//如果有中文则以UTF-8编码为username=%E4%B8%AD%E5%9B%BD&password=123
byte[] entity = sb.toString().getBytes();
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod(”POST”);
//要向外输出数据,要设置这个
conn.setDoOutput(true);
conn.setRequestProperty(”Content-Type”, “application/x-www-form-urlencoded”);
conn.setRequestProperty(”Content-Length”, entity.length+“”);
OutputStream os = conn.getOutputStream();
//以POST方式发送请求体
os.write(entity);
if(conn.getResponseCode()==200){
return true;
}
return false;
}
private static boolean sendPOSTRequest(String path, Map<String, String> params) throws Exception{ // StringBuilder是用来组拼请求参数 StringBuilder sb = new StringBuilder(); if(params!=null &¶ms.size()!=0){ for (Map.Entry<String, String> entry : params.entrySet()) { sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "utf-8")); sb.append("&"); } sb.deleteCharAt(sb.length()-1); } // entity为请求体部分内容 //如果有中文则以UTF-8编码为username=%E4%B8%AD%E5%9B%BD&password=123 byte[] entity = sb.toString().getBytes(); URL url = new URL(path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5000); conn.setRequestMethod("POST"); //要向外输出数据,要设置这个 conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Content-Length", entity.length+""); OutputStream os = conn.getOutputStream(); //以POST方式发送请求体 os.write(entity); if(conn.getResponseCode()==200){ return true; } return false; }
以Android集成的HttpClient框架来发送
[java] view plain copy print?private static boolean sendPOSTRequestHttpClient(String path,
Map<String, String> params) throws Exception{
//封装请求参数
List<NameValuePair> pair = new ArrayList<NameValuePair>();
if(params!=null&& !params.isEmpty()){
for(Map.Entry<String, String> entry:params.entrySet()){
pair.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
}
//把请求参数变成请求体部分
UrlEncodedFormEntity uee = new UrlEncodedFormEntity(pair, “utf-8”);
//使用HttpPost对象设置发送的URL路径
HttpPost post = new HttpPost(path);
//发送请求体
post.setEntity(uee);
//创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息
DefaultHttpClient dhc = new DefaultHttpClient();
HttpResponse response = dhc.execute(post);
if(response.getStatusLine().getStatusCode()==200){
Log.i(”http”, “httpclient”);
return true;
}
return false;
}
private static boolean sendPOSTRequestHttpClient(String path, Map<String, String> params) throws Exception{ //封装请求参数 List<NameValuePair> pair = new ArrayList<NameValuePair>(); if(params!=null&& !params.isEmpty()){ for(Map.Entry<String, String> entry:params.entrySet()){ pair.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); } } //把请求参数变成请求体部分 UrlEncodedFormEntity uee = new UrlEncodedFormEntity(pair, "utf-8"); //使用HttpPost对象设置发送的URL路径 HttpPost post = new HttpPost(path); //发送请求体 post.setEntity(uee); //创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息 DefaultHttpClient dhc = new DefaultHttpClient(); HttpResponse response = dhc.execute(post); if(response.getStatusLine().getStatusCode()==200){ Log.i("http", "httpclient"); return true; } return false; }
转自:http://www.zuidaima.com/share/1550463555308544.htm
在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getParameterMap()方法遍历得到,不论GET或POST都可以通过getRequestURL+getParameterMap()来得到请求完整路径
[java] view plain copy print?
package com.zuidaima
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class GetParams extends HttpServlet {
private static final long serialVersionUID = 1L;
public GetParams() {
super();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
writer.println(”GET ” + request.getRequestURL() + “ ”
+ request.getQueryString());
Map<String, String[]> params = request.getParameterMap();
String queryString = ”“;
for (String key : params.keySet()) {
String[] values = params.get(key);
for (int i = 0; i < values.length; i++) {
String value = values[i];
queryString += key + ”=” + value + “&”;
}
}
// 去掉最后一个空格
queryString = queryString.substring(0, queryString.length() - 1);
writer.println(”GET ” + request.getRequestURL() + “ ” + queryString);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
Map<String, String[]> params = request.getParameterMap();
String queryString = ”“;
for (String key : params.keySet()) {
String[] values = params.get(key);
for (int i = 0; i < values.length; i++) {
String value = values[i];
queryString += key + ”=” + value + “&”;
}
}
// 去掉最后一个空格
queryString = queryString.substring(0, queryString.length() - 1);
writer.println(”POST ” + request.getRequestURL() + “ ” + queryString);
}
}
package com.zuidaima import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GetParams extends HttpServlet { private static final long serialVersionUID = 1L; public GetParams() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter writer = response.getWriter(); writer.println("GET " + request.getRequestURL() + " " + request.getQueryString()); Map<String, String[]> params = request.getParameterMap(); String queryString = ""; for (String key : params.keySet()) { String[] values = params.get(key); for (int i = 0; i < values.length; i++) { String value = values[i]; queryString += key + "=" + value + "&"; } } // 去掉最后一个空格 queryString = queryString.substring(0, queryString.length() - 1); writer.println("GET " + request.getRequestURL() + " " + queryString); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter writer = response.getWriter(); Map<String, String[]> params = request.getParameterMap(); String queryString = ""; for (String key : params.keySet()) { String[] values = params.get(key); for (int i = 0; i < values.length; i++) { String value = values[i]; queryString += key + "=" + value + "&"; } } // 去掉最后一个空格 queryString = queryString.substring(0, queryString.length() - 1); writer.println("POST " + request.getRequestURL() + " " + queryString); } }
相关文章推荐
- android笔记之--向网络发送GET/POST请求参数
- android笔记之--向网络发送GET/POST请求参数
- android笔记之--向网络发送GET/POST请求参数
- php 中使用cURL发送get/post请求,上传图片,批处理
- jersey client 发送Post请求 【带参数】
- [置顶] android网络通讯之HttpClient4不指定参数名发送Post
- Extjs ajax同步请求时post方式参数发送方式
- nodejs 发送 post 请求 带参数
- Extjs ajax同步请求时post方式参数发送方式
- nodejs 发送 post 请求 带参数
- Android学习笔记---27_网络通信之通过GET和POST方式提交参数给web应用,以及使用httpClient,来给web项目以post方式发送参数
- 在ruby中发送get/post请求替换的时候,有些特殊字符需要转义
- Extjs ajax同步请求时post方式参数发送方式
- CSDN_VB自动登陆网络站点详解(四):在WebBrowser中发送POST请求
- java实现URL带参数请求(get/post)
- Extjs的ajax同步请求时post方式参数发送方式
- 向Url发送post请求传递参数
- get/post发送HTTP请求3
- C++网络编程 如何使用SOCKET 发送HTTP1.1 GET POST请求包
- Android Volley网络请求框架 实现post方法并带Map参数上传