【转】 Pro Android学习笔记(六八):HTTP服务(2):HTTP POST
上次学习了HTTP GET请求,这次学习一下HTTP POST。
找一个测试网站
小例子好写,但要找个测试网站就有些麻烦,一下子无从入手,都考虑是否下个Apache,自己弄一个。最后找了个论文查询网站,结果form内容很长,而且很多(少的话就直接用GET)。于是下了个WireShare进行抓包,如下,直接从HTTP的请求消息中看要传递哪些参数。(PS:参数有点多,总比弄个web server要强点)

HTTP POST小例子
HTTP POST和HTTP GET的效力很似,不同的是client的execute()参数是HttpPost实例,而非HttpGet实例。具体如下:
BufferedReader in = null;
try{
//【Step 1】创建一个HttpClient的对象(或使用已有的)
HttpClient client = new DefaultHttpClient();
//【Step 2】实例化一个HTTP GET或者HTTP POST,本例是HTTP POST
HttpPost request = new HttpPost("http://epub.cnki.net/kns/brief/default_result.aspx");
//【Step 3】设置HTTP参数,本例根据抓包的内容填写,这是体力活,在完整HTTP服务的笔记后,会提供小例子下载。对于HTTP Post,需要传递键值对信息,从上面的转包可以看到,这部分不是作为request URI,而是作为HTML Form URL Encoded,为此我们需要用户元素为NameValuePair格式的list来存储这些信息,并封装在UrlEncodedFormEntiry对象中。通过setEntity()加入到请求对象中。
List<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("txt_1_sel","TI$%=|"));
postParameters.add(new BasicNameValuePair("txt_1_value1","Android"));
… …
postParameters.add(new BasicNameValuePair("ua","1.11"));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters);
request.setEntity(formEntity);
//【Step 4】通过HttpClient来执行HTTP call(发出HTTP请求)
HttpResponse response =client.execute(request);
//【Step 5】处理HTTP响应,本例将整个响应的内容(HTTP 200消息的body)都在String中。
in = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent()));
StringBuffer buff = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
while((line = in.readLine())!= null){
buff.append(line + NL);
}
showInfo(buff.toString());
}catch(Exception e){
e.printStackTrace();
showInfo(e.toString());
}finally{
if(in != null){
try{
showInfo("== process in.colse() ==");
in.close();
}catch(Exception e){
e.printStackTrace();
showInfo(e.toString());
}
}
}
本博文涉及的例子代码,可以在Pro Android学习:Http service小例子中下载。
相关链接: 我的Android开发相关文章
【转】 Pro Android学习笔记(六八):HTTP服务(2):HTTP POST的更多相关文章
- 【转】 Pro Android学习笔记(八二):了解Package(1):包和进程
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在之前,我们已经学习了如何签发apk,见P ...
- 【转】 Pro Android学习笔记(八六):了解Package(5):使用lib
目录(?)[-] 在项目中使用lib 源代码 了解一些机制 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowin ...
- 【转】 Pro Android学习笔记(八十):服务(5):访问远程服务
目录(?)[-] Client的AIDL文件 Client的代码 建立连接 请求服务 断开连接 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://bl ...
- 【转】 Pro Android学习笔记(八八):了解Handler(2):什么是Handler
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 之前我们有一篇很好的博文<Andro ...
- 【转】 Pro Android学习笔记(八九):了解Handler(3):延迟执行小例子
目录(?)[-] 小例子 Handler的处理 Activity的代码片段 后台线程和UI的互动 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://b ...
- 【转】 Pro Android学习笔记(八四):了解Package(3):包间数据共享
目录(?)[-] 共享User ID的设置 共享资源例子 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...
- 【转】 Pro Android学习笔记(八五):了解Package(4):lib项目
目录(?)[-] 什么是lib项目 小例子 Lib的实现 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowing ...
- 【转】 Pro Android学习笔记(八三):了解Package(2):包签名过程
目录(?)[-] 类比例子 数字签名 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingflying/ 在W ...
- 【转】 Pro Android学习笔记(八七):了解Handler(1):组件和线程
目录(?)[-] 主线程消息队列和线程池 查看线程信息 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.net/flowingf ...
- 【转】Pro Android学习笔记(八):了解Content Provider(下中)
在之前提供了小例子BookProvider,我们回过头看看如何将通过该Content Provider进行数据的读取. (1)增加 private void addBook(String name , ...
随机推荐
- spider_action
spider from mobile to mobile to mobile from selenium import webdriver from selenium.webdriver.chrome ...
- inux c编程:记录锁
记录锁的功能:当一个进程正在读或修改文件的某个部分是,它可以阻止其他进程修改同一文件区.对于这个功能阐述我认为有三点要解释的: 记录锁不仅仅可以用来同步不同进程对同一文件的操作,还可以通过对同一文件加 ...
- 【转载】解决Apache2+PHP上传文件大小限制的问题
原文出处:http://evol1216.blog.163.com/blog/static/13019958020106783623528/ 在用PHP进行文件上传的操作中,需要知道怎么控制上传文件大 ...
- The given 'driver' ] is unknown, Doctrine currently supports only the follo wing drivers: pdo_mysql, pdo_sqlite, pdo_pgsql, pdo_oci, oci8, ibm_db2, pdo
[Doctrine\DBAL\DBALException] The given 'driver' ] ...
- Ext部署在本地tomcat下运行例子
我本地用的ext6+,从官网下载好Ext后解压到D盘,然后打开tomcat的server.xml,在Host标签内配置 <Context path="/ext-6.2.0" ...
- Linux里AWK中split函数的用法
跟java里的split函数的用法是很相像的,举例如下: The awk function split(s,a,sep) splits a string s into an awk array a u ...
- ICCV 2015 B-CNN细粒度分类
哈哈,好久没写博客了....最近懒癌发作~~主要是因为心情不太好啊,做什么事情都不太顺心,不过已经过去啦.最近一直忙着公司的项目,想用这个网络,就给大家带来了的这篇文章.可能比较老,来自ICCV 20 ...
- rails json
respond_to do |f| f.json { render :json => {:a => b, :c => d}.to_json } } end
- Android selector背景选择器
selector根据不同的选定状态来定义不同的现实效果 常用属性: android:state_selected--------选中 android:state_focused--------获得焦点 ...
- Data Structure Binary Tree: Construct Tree from given Inorder and Preorder traversals
http://www.geeksforgeeks.org/construct-tree-from-given-inorder-and-preorder-traversal/ #include < ...