Android之用HTTP的get,post,HttpClient三种方式向service提交文本数据
来源:互联网 发布:淘宝首页添加链接代码 编辑:程序博客网 时间:2024/04/30 01:56
客户端代码示例:
- /**
- * HTTP请求
- * @author kesenhoo
- *
- */
- public class HttpRequest{
- public staticboolean sendXML(String path, String xml)throws Exception{
- byte[] data = xml.getBytes();
- URL url = new URL(path);
- HttpURLConnection conn = (HttpURLConnection)url.openConnection();
- conn.setRequestMethod("POST");
- conn.setConnectTimeout(5 *1000);
- //如果通过post提交数据,必须设置允许对外输出数据
- conn.setDoOutput(true);
- conn.setRequestProperty("Content-Type","text/xml; charset=UTF-8");
- conn.setRequestProperty("Content-Length", String.valueOf(data.length));
- OutputStream outStream = conn.getOutputStream();
- outStream.write(data);
- outStream.flush();
- outStream.close();
- if(conn.getResponseCode()==200) {
- returntrue;
- }
- return false;
- }
- /**
- * 通过get方式提交参数给服务器
- * @param path
- * @param params
- * @param enc
- * @return
- * @throws Exception
- */
- public staticboolean sendGetRequest(String path, Map<String, String> params, String enc)throws Exception {
- //构造如下形式的字符串,这里的字符串依情况不同
- // ?method=save&title=435435435&timelength=89&
- //使用StringBuilder对象
- StringBuilder sb = new StringBuilder(path);
- sb.append('?');
- //迭代Map
- 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 = new URL(sb.toString());
- HttpURLConnection conn = (HttpURLConnection)url.openConnection();
- conn.setRequestMethod("GET");
- conn.setConnectTimeout(5 *1000);
- //如果请求响应码是200,则表示成功
- if(conn.getResponseCode()==200){
- returntrue;
- }
- returnfalse;
- }
- /**
- * 通过Post方式提交参数给服务器
- * @param path
- * @param params
- * @param enc
- * @return
- * @throws Exception
- */
- public staticboolean sendPostRequest(String path, Map<String, String> params, String enc)throws Exception {
- //需要构造的字符串形式如下:
- // title=dsfdsf&timelength=23&method=save
- StringBuilder sb = new StringBuilder();
- //如果参数不为空
- if(params!=null && !params.isEmpty()){
- for(Map.Entry<String, String> entry : params.entrySet()){
- //Post方式提交参数的话,不能省略内容类型与长度
- sb.append(entry.getKey()).append('=')
- .append(URLEncoder.encode(entry.getValue(), enc)).append('&');
- }
- sb.deleteCharAt(sb.length()-1);
- }
- //得到实体的二进制数据
- byte[] entitydata = sb.toString().getBytes();
- URL url = new URL(path);
- HttpURLConnection conn = (HttpURLConnection)url.openConnection();
- conn.setRequestMethod("POST");
- conn.setConnectTimeout(5 *1000);
- //如果通过post提交数据,必须设置允许对外输出数据
- conn.setDoOutput(true);
- //这里只设置内容类型与内容长度的头字段
- //内容类型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();
- //如果请求响应码是200,则表示成功
- if(conn.getResponseCode()==200){
- returntrue;
- }
- returnfalse;
- }
- /**
- * 在遇上HTTPS安全模式或者操作cookie的时候使用HTTPclient会方便很多
- * 使用HTTPClient(开源项目)向服务器提交参数
- * @param path
- * @param params
- * @param enc
- * @return
- * @throws Exception
- */
- public staticboolean sendRequestFromHttpClient(String path, Map<String, String> params, String enc)throws Exception {
- //需要把参数放到NameValuePair
- 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 entitydata = new UrlEncodedFormEntity(paramPairs, enc);
- //构造一个请求路径
- HttpPost post = new HttpPost(path);
- //设置请求实体
- post.setEntity(entitydata);
- //浏览器对象
- DefaultHttpClient client = new DefaultHttpClient();
- //执行post请求
- HttpResponse response = client.execute(post);
- //从状态行中获取状态码,判断响应码是否符合要求
- if(response.getStatusLine().getStatusCode()==200){
- returntrue;
- }
- returnfalse;
- }
- }
- Android之用HTTP的get,post,HttpClient三种方式向service提交文本数据
- Android----用HTTP的get,post,HttpClient三种方式向web service提交文本数据
- Android之使用HTTP的get,post,HttpClient三种方式向服务器端提交文本数据
- Android之使用HTTP的get,post,HttpClient三种方式向服务器端提交文本数据
- [Android开发]Android之使用HTTP的get,post,HttpClient三种方式向服务器端提交文本数据
- HTTP的get,post,HttpClient三种方式向服务器端提交文本数据
- 使用get,post,httpclient三种方式向服务器提交文本数据
- 使用get,post,httpclient三种方式向服务器提交文本数据
- 使用get,post,httpclient三种方式向服务器提交文本数据
- Android网络数据之向服务器提交数据的三种方式(get+post+AsyncHttpClient)
- Android之使用HTTP协议的Get/Post方式向服务器提交数据
- Android之使用HTTP协议的Get/Post方式向服务器提交数据
- Android之使用HTTP协议的Get/Post方式向服务器提交数据
- Android Get,Post,AsyncHttpClient向服务器提交数据三种方式
- Android向服务器提交数据(方式:get、post、AsyncHttpClient )
- python用 GET,POST,PUT,DELETE方式向HTTP提交数据
- Android中post和get的提交方式【三种】
- Android之向服务器提交数据(POST,GET,AsyncHttpClient)
- 高质量编程之表达式和基本语句
- 专访邓凡平:Android开发路上的快速学习之道
- 投文章模板
- node.js npm ffi Could not locate the bindings file
- 在Android中对SD卡进行扇区级读写
- Android之用HTTP的get,post,HttpClient三种方式向service提交文本数据
- openerp开发案例
- 有待验证的问题
- 王超:奇虎360 MongoDB
- Android 异步获取网络图片并处理导致内存溢出问题解决方法
- Magento A-Z和sitemap插件
- SNMP监控系统cpu、disk、memory等问题汇总
- 阅读paper技巧
- 直接拿来用!最火的Android开源项目(一)