向网络发送GET/POST请求参数

使用GET方法发送请求

  1. private static boolean sendGETRequest (String path,  
  2.   
  3.                      Map<String, String> params) throws Exception{  
  4.   
  5.               //发送地http://192.168.100.91:8080/videoService/login?username=abc&password=123  
  6.   
  7.               // StringBuilder是用来组拼请求地址和参数  
  8.   
  9.               StringBuilder sb = new StringBuilder();  
  10.   
  11.               sb.append(path).append(”?”);  
  12.   
  13.               if(params!=null &¶ms.size()!=0){  
  14.   
  15.                      for (Map.Entry<String, String> entry : params.entrySet()) {  
  16.   
  17. //如果请求参数中有中文,需要进行URLEncoder编码  
  18.   
  19.                             sb.append(entry.getKey()).append(”=”).append(URLEncoder.encode(entry.getValue(), “utf-8”));  
  20.   
  21.                             sb.append(”&”);                            
  22.   
  23.                      }  
  24.   
  25.                      sb.deleteCharAt(sb.length()-1);  
  26.   
  27.               }  
  28.   
  29.               URL url = new URL(sb.toString());  
  30.   
  31.               HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
  32.   
  33.               conn.setConnectTimeout(5000);  
  34.   
  35.               conn.setRequestMethod(”GET”);  
  36.   
  37.               if(conn.getResponseCode()==200){  
  38.   
  39.                      return true;  
  40.   
  41.               }  
  42.   
  43.               return false;  
  44.   
  45.        }  
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长度一样

  1. private static boolean sendPOSTRequest(String path,  
  2.   
  3.                      Map<String, String> params) throws Exception{  
  4.   
  5. // StringBuilder是用来组拼请求参数  
  6.   
  7.               StringBuilder sb = new StringBuilder();  
  8.   
  9.               if(params!=null &¶ms.size()!=0){  
  10.   
  11.                      for (Map.Entry<String, String> entry : params.entrySet()) {  
  12.   
  13.                             sb.append(entry.getKey()).append(”=”).append(URLEncoder.encode(entry.getValue(), “utf-8”));  
  14.   
  15.                             sb.append(”&”);                            
  16.   
  17.                      }  
  18.   
  19.                      sb.deleteCharAt(sb.length()-1);  
  20.   
  21.               }  
  22.   
  23. // entity为请求体部分内容  
  24.   
  25. //如果有中文则以UTF-8编码为username=%E4%B8%AD%E5%9B%BD&password=123  
  26.   
  27.               byte[] entity = sb.toString().getBytes();  
  28.   
  29.               URL url = new URL(path);  
  30.   
  31.               HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
  32.   
  33.               conn.setConnectTimeout(5000);  
  34.   
  35.               conn.setRequestMethod(”POST”);  
  36.   
  37. //要向外输出数据,要设置这个  
  38.   
  39.               conn.setDoOutput(true);  
  40.   
  41.               conn.setRequestProperty(”Content-Type”“application/x-www-form-urlencoded”);  
  42.   
  43.               conn.setRequestProperty(”Content-Length”, entity.length+“”);  
  44.   
  45.               OutputStream os = conn.getOutputStream();  
  46.   
  47. //以POST方式发送请求体  
  48.   
  49.               os.write(entity);  
  50.   
  51.               if(conn.getResponseCode()==200){  
  52.   
  53.                      return true;  
  54.   
  55.               }  
  56.   
  57.               return false;  
  58.   
  59.        }  
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框架来发送

  1. private static boolean sendPOSTRequestHttpClient(String path,  
  2.    Map<String, String> params) throws Exception{  
  3.   //封装请求参数  
  4.   List<NameValuePair> pair = new ArrayList<NameValuePair>();  
  5.   if(params!=null&& !params.isEmpty()){  
  6.    for(Map.Entry<String, String> entry:params.entrySet()){  
  7.     pair.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));  
  8.    }  
  9.   }  
  10.   //把请求参数变成请求体部分  
  11.   UrlEncodedFormEntity uee = new UrlEncodedFormEntity(pair, “utf-8”);  
  12.   //使用HttpPost对象设置发送的URL路径  
  13.   HttpPost post = new HttpPost(path);  
  14.   //发送请求体  
  15.   post.setEntity(uee);  
  16.   //创建一个浏览器对象,以把POST对象向服务器发送,并返回响应消息  
  17.   DefaultHttpClient dhc = new DefaultHttpClient();  
  18.   HttpResponse response = dhc.execute(post);  
  19.   if(response.getStatusLine().getStatusCode()==200){  
  20.    Log.i(”http”“httpclient”);  
  21.    return true;  
  22.   }  
  23.   return false;  
  24.  }  
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()来得到请求完整路径

  1. package com.zuidaima                          
  2. import java.io.IOException;  
  3. import java.io.PrintWriter;  
  4. import java.util.Map;  
  5.   
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. public class GetParams extends HttpServlet {  
  12.     private static final long serialVersionUID = 1L;  
  13.   
  14.     public GetParams() {  
  15.         super();  
  16.     }  
  17.   
  18.     protected void doGet(HttpServletRequest request,  
  19.             HttpServletResponse response) throws ServletException, IOException {  
  20.         PrintWriter writer = response.getWriter();  
  21.         writer.println(”GET ” + request.getRequestURL() + “ ”  
  22.                 + request.getQueryString());  
  23.   
  24.         Map<String, String[]> params = request.getParameterMap();  
  25.         String queryString = ”“;  
  26.         for (String key : params.keySet()) {  
  27.             String[] values = params.get(key);  
  28.             for (int i = 0; i < values.length; i++) {  
  29.                 String value = values[i];  
  30.                 queryString += key + ”=” + value + “&”;  
  31.             }  
  32.         }  
  33.         // 去掉最后一个空格  
  34.         queryString = queryString.substring(0, queryString.length() - 1);  
  35.         writer.println(”GET ” + request.getRequestURL() + “ ” + queryString);  
  36.     }  
  37.   
  38.     protected void doPost(HttpServletRequest request,  
  39.             HttpServletResponse response) throws ServletException, IOException {  
  40.         PrintWriter writer = response.getWriter();  
  41.         Map<String, String[]> params = request.getParameterMap();  
  42.         String queryString = ”“;  
  43.         for (String key : params.keySet()) {  
  44.             String[] values = params.get(key);  
  45.             for (int i = 0; i < values.length; i++) {  
  46.                 String value = values[i];  
  47.                 queryString += key + ”=” + value + “&”;  
  48.             }  
  49.         }  
  50.         // 去掉最后一个空格  
  51.         queryString = queryString.substring(0, queryString.length() - 1);  
  52.         writer.println(”POST ” + request.getRequestURL() + “ ” + queryString);  
  53.     }  
  54. }  
  55.   
  56.                       
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);
    }
}

                    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值