`
dcj3sjt126com
  • 浏览: 1871161 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

使用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 学习笔记6-HttpClient 多线程下载 断点续传 进度条 源码关联

    2、使用HttpClient发送POST请求:和之前的GET类似 3、使用异步HttpClient发送请求,可以在github上找一些别人已经写好的代码,封装度比较高,直接拿来用。 4、多线程下载:使用RandomAccessFile输出流写 5、多线程...

    android移动互联笔记

    - **POST请求**:将参数置于请求体中发送。 - **常用方法**: - `setConnectionTimeout(int time)`:设置连接超时时间。 - `setReadTimeout(int time)`:设置读取超时时间。 - `setDoOutput(true)`:设置是否允许...

    某电商项目接口文档

    - **请求方式**: GET/POST - **接口备注**: 用户登录接口 - **请求参数**: - `mobile`: 手机号码 - `password`: 密码 ##### 2. 注册接口 - **接口地址**: `https://www.zhaoapi.cn/user/reg` - **请求方式**: GET...

    Android高级笔记

    ### Android高级笔记——Volley详解 #### 一、Volley简介及作用 Volley是Google提供的一个用于Android的网络通信库,它可以帮助开发者更轻松地完成HTTP请求和响应的处理,尤其是在图片加载方面表现优秀。Volley支持...

    Retrofit源码之请求对象的转换笔记

    Retrofit是一个流行的Android和Java网络库,它允许开发者通过简单的接口定义来创建网络请求。在深入源码分析请求对象的转换过程之前,我们需要先理解Retrofit的工作原理。Retrofit将我们的HTTP请求抽象为Java方法,...

    android安卓笔记

    - **HttpURLConnection-下载**:`HttpURLConnection`类提供了HTTP协议的基本功能,可以用来发送GET和POST请求,并获取服务器响应。在下载文件时,通常使用此类的实例来发起HTTP请求并读取响应流。 - **...

    Android App_云随笔课程设计

    当用户向下拉动列表时,应用将发送请求到服务器获取最新数据,并更新UI。 6. **权限管理**:考虑到Android的权限模型,我们需要确保在适当的时候请求用户授予访问存储和网络的权限。 7. **错误处理和调试**:良好...

    Android学习笔记——Http通信 源码

    这些库可以帮助开发者发送GET、POST等HTTP请求,获取服务器响应,并进行数据解析。在实际开发中,OkHttp因其高效、易用和强大的特性而受到广泛应用。 总的来说,这篇学习笔记涵盖了Android应用中网络通信的基础知识...

    慕课网 Android中的Http通信 笔记及源码

    总结,Android中的Http通信是开发过程中的核心技能之一,涉及到网络请求、权限管理、线程控制等多个方面。掌握这些知识点,能帮助开发者有效地构建与服务器交互的Android应用。通过实际编码和调试,能够提升对Http...

    Http通信与Socket通信_笔记[文].pdf

    使用`HttpURLConnection`进行GET和POST请求: - GET请求可以将参数附加到URL后面,而POST请求则将参数放入HTTP请求体中。 - 对于POST请求,需要设置`setDoOutput(true)`和`setDoInput(true)`,并设置请求方法为...

    Android应用源码之小米便签源代码分享.zip

    开发者可以学习如何处理异步任务,发送GET/POST请求,以及如何处理JSON数据。 5. **权限管理**:随着Android系统权限模型的变化,源代码可能会展示如何在运行时动态申请权限,比如读写存储权限,这对于理解Android ...

    xamarin学习笔记A15(安卓OkHttp3和HttpURLConnection)上

    3. 发送请求时,需要打开一个URLConnection,设置请求方法,然后写入请求体(如果需要POST请求)。读取响应时,需要处理输入流。这个过程相比OkHttp3来说更为繁琐,也更容易出错。 三、选择与比较 1. 在选择OkHttp...

    python爬虫-mast笔记

    2. **requests库**:`requests.get()`用于发起GET请求,`requests.post()`用于发起POST请求。还可以设置headers、cookies、超时等参数,以模拟不同的用户行为。 3. **网页解析**:`BeautifulSoup`库能方便地解析...

    Android AndBase框架使用封装好的函数完成Http请求(三)

    本篇笔记主要探讨如何利用AndBase框架实现无参、有参的HTTP GET和POST请求。 1. **使用AndBase框架实现无参Http Get请求** 在AndBase中,发起无参GET请求通常通过`AbHttpUtils.get()`函数来完成。这个函数会内部...

    安卓开发笔记

    - **HTTP请求**:理解Android的HttpURLConnection和OkHttp库,发送GET和POST请求。 - **JSON解析**:学习使用Gson或Jackson库解析JSON数据。 5. **服务(Service)**: - **启动服务**:了解如何创建和启动后台...

    我的android学习心得

    理解HTTP协议的基本原理,学习如何发送GET和POST请求,处理JSON数据,是开发网络功能的基础。 存储数据也是Android开发中不可忽视的部分。SQLite数据库用于本地持久化数据,而SharedPreferences适用于轻量级的偏好...

    Android开发笔记之简单基站定位程序的实现

    然后,可以将这些参数发送到一个服务器,比如Google提供的API,以获取经纬度等地理位置信息。这个过程中,通常需要进行HTTP通信,并处理返回的JSON格式的数据以解析地理位置信息。 实现流程大致可以分为以下几个...

    xUtils3视频笔记

    开发者可以通过它轻松地实现GET和POST请求,同时支持上传和下载操作。HttpUtils还提供了异步请求的能力,可以配合回调接口处理请求结果,确保UI线程不会被阻塞,提高了用户体验。此外,xUtils3的缓存机制也使得在...

Global site tag (gtag.js) - Google Analytics