当前位置:首页 > 开发 > 移动开发 > 正文

android笔记之--向网络发送GET/POST请求参数

发表于: 2014-05-21   作者:dcj3sjt126com   来源:转载   浏览:
摘要: 使用GET方法发送请求 private static boolean sendGETRequest (String path, Map<String, String> params) throws Exception{ //发送地http://192.168.100.91:8080/videoServi

使用GET方法发送请求

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长度一样

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框架来发送

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;
 }

 

android笔记之--向网络发送GET/POST请求参数

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
GET与POST方式发送请求参数 getAndPostExample.html清单: <!DOCTYPE html PUBLIC "-//W3C//DTD
GET与POST方式发送请求参数 getAndPostExample.html清单: <!DOCTYPE html PUBLIC "-//W3C//DTD
GET与POST方式发送请求参数 getAndPostExample.html清单: <!DOCTYPE html PUBLIC "-//W3C//DTD
​【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章
网络请求-GET请求: 1,NSURL: 请求地址; 2,NSURLRequest :一个NSURLRequest对象就代表一个请求
服务器端代码 [java] package org.xiazdong.servlet; import java.io.IOException; import javax.se
HTTP的请求详解在我的博客中已经讲解过: http://blog.csdn.net/xiazdong/article/details/7215296
HTTP的请求详解在我的博客中已经讲解过: http://blog.csdn.net/xiazdong/article/details/7215296
HTTP的请求详解在我的博客中已经讲解过: http://blog.csdn.net/xiazdong/article/details/7215296
一、HTTP Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。U
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号