- 浏览: 936778 次
- 性别:
- 来自: 重庆
文章分类
- 全部博客 (453)
- Windows phone 7 (0)
- Andriod (47)
- iPhone (1)
- Web (30)
- J2EE (34)
- stucts 2学习笔记 (34)
- 开发项目 (3)
- spring学习笔记 (24)
- EJB学习笔记 (6)
- Hibernate学习笔记 (15)
- JPA学习笔记 (8)
- Jsp (11)
- ajax (7)
- 异常收集模块 (1)
- jquery (2)
- phoneGap (2)
- jquery Mobile (0)
- java面试总结 (5)
- Object-C (0)
- javascript (6)
- Eclipse (5)
- 支付集成 (2)
- Weblogic (1)
- Dubbox (5)
- Redis (10)
- linux (21)
- Codis (2)
- React Native (0)
- Mysql (6)
- Docker (3)
- 自动化部署 (1)
- 项目Bug管理平台 (2)
- 负载均衡 (1)
- Mycat (2)
- Java基础知识 (16)
- 数据库 (7)
- Maven (17)
- Kafka (21)
- logs (2)
- 大并发 (2)
- 消息中间件 (2)
- 分布式锁 (3)
- 算法 (4)
- 数字证书原理,公钥私钥 (0)
- 数字证书原理 (1)
- 公钥私钥 (1)
- zookeeper (4)
- Hbase (9)
- Hadoop (2)
- storm (2)
- 通信协议 (1)
- Hive (3)
- git (1)
- JVM (2)
- 大数据相关算法 (1)
- idea (5)
- 将博客搬至CSDN (1)
- 设计模式 (2)
- 表达式 (1)
- 代码审查工具 (0)
- 开源项目 (1)
- PyCharm (0)
- python (6)
- Kubernetes (1)
- swagger (1)
- Maven中mirrors和repository的关系 (0)
- RabbitMQ (3)
- redisson (1)
- k8s (2)
- Mac (1)
最新评论
-
misisipi101:
假设库已经分为32个,那么要扩展到64个,怎样做呢
订单分库分表实践总结以及关键步骤 -
mfkxk298:
简单明了的例子,解决了问题,谢谢啦!
关于ListView中notifyDataSetChanged()刷新数据不更新原因 -
whbwang:
" target="_blank" ...
java web开发 高并发处理 -
suguoqian:
...
java web开发 高并发处理 -
xiangnanyujing:
Dubbox+Redis3.0+Spring+Hibernate+zookeeper实现消息推送核心搭建
在我们的实际开发中我们很多时候都需要向服务器提交数据来获取服务器响应数据...
下面我就来总结一下通常使用的提交参数的方法有GET和POST
首先来看一下GET方式提交数据 注意:GET方式提交数据一般在2k左右(因服务器而异)
GET方式:
看下面的方法
public static boolean sendGetRequest(String path, Map<String, String> params, String enc) throws Exception{
//path 是我们提交参数的路径
//params 是提交的参数,通过一个Map来封装这些提交参数
//enc 是编码方式(一般在服务器是:ISO-8859-1 android:UTF-8 还要常见的 gbk、gb2312)
//下面是组拼提交路径
StringBuilder sb = new StringBuilder(path);
sb.append('?');
//提交参数----> ?method=save&title=435435435&timelength=89&
//我们通过先得到这个Map的实体集合,让后通过迭代去得到实体的Key、Value
for(Map.Entry<String, String> entry : params.entrySet()){
sb.append(entry.getKey()).append('=')
.append(URLEncoder.encode(entry.getValue(), enc)).append('&');
}
//去掉最后多月的&
sb.deleteCharAt(sb.length()-1);
//下面的得到url对象打开连接建立通道
URL url = new URL(sb.toString());
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置请求方式 (这里因为是采用Http协议)
conn.setRequestMethod("GET");
//设置请求超时时间
conn.setConnectTimeout(5 * 1000);
if(conn.getResponseCode()==200){
return true;
}
return false;
}
POST方式:
看下面方法:
<1、我们直接面向Http协议去提交数据
//需要HttpWahcer查看去查看请求头协议(在android其它软件)
public static boolean sendPostRequest(String path, Map<String, String> params, String enc) throws Exception{
//path :提交参数路径
//params:是提交数据 通过Map来封装这些数据
//enc:编码方式 -->为了不出现乱码
// --->提交数据:title=dsfdsf&timelength=23&method=save
StringBuilder sb = new StringBuilder();
//组拼提交数据
if(params!=null && !params.isEmpty()){
for(Map.Entry<String, String> entry : params.entrySet()){
sb.append(entry.getKey()).append('=')
.append(URLEncoder.encode(entry.getValue(), enc)).append('&');
}
sb.deleteCharAt(sb.length()-1);
}
//通过HttpWatch可以知道 在我们直接面向Http协议通过POST提交数据时我们可以只需
//提交的请求头有Content-Type:和Content-Length: 和我们提交数据即可
//注意:在这里提交的Content-Length:是以二进制来计量长度的
byte[] entitydata = sb.toString().getBytes();//得到实体的二进制数据
//得到连接通道
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置请求方式和连接超时
conn.setRequestMethod("POST");
conn.setConnectTimeout(5 * 1000);
//注意:这里设置允许输出必须设置true因为我们通过Http协议下服务器提交数据所有必须设置输出
conn.setDoOutput(true);//如果通过post提交数据,必须设置允许对外输出数据
//Content-Type: application/x-www-form-urlencoded
//Content-Length: 38
//设置请求头的属性
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", String.valueOf(entitydata.length));
//通过通道得到输出流
OutputStream outStream = conn.getOutputStream();
//写出数据
outStream.write(entitydata);
//让缓存中数据及时输出
outStream.flush();
outStream.close();
if(conn.getResponseCode()==200){
return true;
}
return false;
}
<2、
我们通过开源的HttpClient去向服务器提交数据,这里android已经集成了这个开源项目所有就不用加入jar包了
在这个开源的项目中它已经帮助我们封装了上面我们通过直接面向Http协议提交数据中的请求协议部分
方法如下:
//SSL HTTPS Cookie
//注意:如果我们在其他项目中如果用到 SSL 、HTTPS、Cookie时使用这个开源项目会使得编程更简单
public static boolean sendRequestFromHttpClient(String path, Map<String, String> params, String enc) throws Exception{
//参数如上
//下面通过名字对和List集合来封装我们的数据
// NameValuePair就相当于我们的Map
List<NameValuePair> paramPairs = new ArrayList<NameValuePair>();
if(params!=null && !params.isEmpty()){
for(Map.Entry<String, String> entry : params.entrySet()){
paramPairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
}
}
//通过UrlEncodedFormEntity对我们发送的数据进行编码(enc),让后获得实体数据部分
UrlEncodedFormEntity entitydata = new UrlEncodedFormEntity(paramPairs, enc);//得到经过编码过后的实体数据
//通过HttpPost类来提交我们的数据
HttpPost post = new HttpPost(path); //form
//设置请求提交的数据实体
post.setEntity(entitydata);
//相当于浏览器来提交数据
DefaultHttpClient client = new DefaultHttpClient(); //浏览器
HttpResponse response = client.execute(post);//执行请求
if(response.getStatusLine().getStatusCode()==200){
return true;
}
return false;
}
发表评论
-
App开发一些总结
2016-04-05 17:48 2596架构因人而异,不同的架构师大多会有不同的看法;架构也因项目 ... -
java 实现微信搜索附近人功能
2015-03-25 18:07 4929最近给andorid做后台查询数据功能,有一个需求是模仿微信 ... -
重庆APP开发 重庆Android 重庆Ios 爬虫科技 重庆爬虫科技
2014-10-06 12:03 9<!--[if gte mso 9]><x ... -
android 操作文件
2012-08-30 11:15 1049package com.liyong; import jav ... -
android获取短信内容
2012-08-29 23:10 1551自己研究: package com.liyong.data; ... -
Android中的日历操作
2012-08-29 13:01 3017日历的操作方法,这里主要用到了ContentProiver的知 ... -
android获取CMNET、WIFI、CMWAP联网状态
2012-08-29 12:40 5863private static final int CMNET= ... -
android实现手势缩放、移动图片
2012-08-28 19:37 9280新建一个触摸监听器类 package com.liyong. ... -
怎样把信息绘制到图片中并且保存到本地硬盘上
2012-08-27 12:53 1369自己研究吧。。。 //解释一下由于我们不是绘制到手机屏幕上所 ... -
关于ListView中notifyDataSetChanged()刷新数据不更新原因
2012-08-26 21:41 50320使用Listview的时候: 当要动态显示更改后的数据(例如数 ... -
android中获取联系人相关信息
2012-08-26 18:42 1680自己看........... public static ... -
修改Android中strings.xml文件, 动态改变数据
2012-08-24 18:25 10846有些朋友可能会动态的修改Android中strings.xml ... -
android内存泄漏
2012-07-25 21:04 1709尽量不要使用setImageBitmap或setImageRe ... -
将程序安装到SD卡
2012-04-28 22:11 883Android 2.2系统的一大改进就是通过Move to S ... -
一个很好的加密解密字符串
2012-04-28 22:11 1137package net.sf.andhsli.hotspotl ... -
获取手机位置
2012-04-28 22:11 1009private double[] getGPS() { Lo ... -
获取手机位置
2012-05-04 09:39 1098private double[] getGPS() { Lo ... -
查看内存存储
2012-05-03 10:05 1091import java.io.File; import a ... -
获取本机电话号码
2012-05-03 10:04 1112private String getMyPhoneNumber ... -
发送彩信
2012-05-03 10:04 1007Uri uri = Uri.parse(\"cont ...
相关推荐
在Android客户端向服务器提交请求时,遇到中文乱码问题是一个常见的困扰。这通常是由于编码格式不一致或处理不当导致的。以下将详细解释这个问题的原因、影响以及如何解决。 首先,我们要明白字符编码的基本原理。...
本文将详细讲解如何在Android端使用GET和POST方法提交数据到服务器,并结合传智播客张泽华Android视频54-57中的代码示例进行解析。 一、GET方法 GET方法是最简单的HTTP请求方式,常用于获取服务器上的资源。在...
使用`HttpURLConnection`提交数据的基本步骤如下: 1. **建立连接**:通过URL对象获取`HttpURLConnection`实例。 2. **设置请求方法**:通常为`POST`,表示我们要向服务器发送数据。 3. **设置请求属性**:如...
4. **上传数据**:当需要向服务器上传数据时,通常包括文件上传和表单数据提交。文件上传涉及Multipart请求,可以使用RequestBody、OkHttp的RequestBody.create方法来创建。表单数据可以通过POST请求的RequestBody...
- **API设计**:定义清晰的API接口,用于向服务器提交数据,可能包括POST、PUT、DELETE等HTTP方法。 - **数据校验**:在提交前对用户输入进行校验,防止无效数据的发送。 - **错误处理**:处理可能出现的网络错误...
以下将详细讲解四种提交数据到服务器的方法:GET、POST、HttpClient的GET以及HttpClient的POST。 1. GET方法: GET是HTTP协议中最基本的请求方法,用于从服务器获取资源。在Android中,可以使用`HttpURLConnection`...
本文将详细介绍如何在Android应用中使用SSH来向服务器提交数据。 首先,理解SSH的基本概念是至关重要的。SSH是一种网络协议,主要用于加密网络连接,确保数据传输过程中的安全性。它允许用户在不安全的网络环境中...
GET用于获取数据,POST用于提交数据,PUT用于更新已有资源,而DELETE用于删除资源。"Android客户端和服务器端数据交互Demo01"可能包含了这些请求类型的示例代码。 2. **网络权限**:在Android中,进行网络操作前...
- POST请求常用于提交数据,如表单数据、文件上传等。数据被包含在请求体中。 - Android中,可以使用`HttpURLConnection`或`HttpClient`来实现POST请求。`HttpURLConnection`是Java标准库的一部分,适用于API级别...
在Android应用开发中,客户端与服务器的通信是至关重要的,特别是在构建移动应用时,需要实时地获取或提交数据。在这个场景中,Android客户端通常通过HTTP协议与服务器进行交互,而JSON(JavaScript Object Notation...
HTTP POST请求用于向服务器提交数据,常用于表单提交。与GET方法不同,POST方法会将数据包含在HTTP请求体内发送给服务器。这在提交大量数据或敏感数据时尤其有用,因为它可以避免将数据暴露在URL中。 Android提供了...
2. **请求与响应**:客户端(通常是Android应用)通过发送HTTP请求(GET、POST等)来向服务器端获取或者提交数据。服务器接收到请求后,处理数据并返回响应,响应中可能包含处理结果或需要返回的数据。 3. **JSON ...
在IT行业中,移动设备与服务器之间的数据交互是关键的一环,尤其在Android应用程序与ASP服务器的集成中。本文将深入探讨如何实现“android手机与asp服务器传输数据源码”这一主题,结合描述和标签,我们将关注ASP...
在Android应用开发中,客户端与服务器端的数据交互是不可或缺的一部分,JSON作为一种轻量级的数据交换格式,被广泛用于Android和服务器之间的通信。本主题将深入探讨Android客户端如何使用JSON进行数据交互,包括...
GET方法通常用于请求特定资源的信息,而POST方法则用于提交数据到服务器。Android SDK提供了多种API,如HttpURLConnection和HttpClient,用于发起HTTP请求和处理响应。 #### 数据格式与处理 在数据交互中,常见的...
GET方法用于获取服务器上的资源,而POST方法则常用于向服务器提交数据,如表单数据或者文件。 1. **GET方法**:GET请求将参数附加到URL后面,以问号(?)分隔,每个参数之间用&连接。这种方式简单且易于理解,但...
以上就是使用POST方式在Android中向服务器提交数据的基本步骤。在实际开发中,还需要根据业务需求进行更复杂的处理,例如添加缓存策略、超时重试等。同时,为了提高代码可读性和可维护性,建议封装成网络访问工具类...
* 本类封装了Android中向web服务器提交数据的两种方式四种方法 */ public class SubmitDataByHttpClientAndOrdinaryWay { /** * 使用get请求以普通方式提交数据 * @param map 传递进来的数据,以map的形式进行...
- **POST**:主要用于提交数据到服务器,数据不会显示在URL中。POST方法适用于发送大量或敏感数据。 - **数据格式**:Android客户端与服务器之间的数据交换主要采用JSON或XML格式。这两种格式都是轻量级的数据交换...