安卓Http Post请求封装类
2015-11-27 16:40
603 查看
自己封装了一个安卓Http post请求的发送及处理的线程类,闲着没事扔到这里来
import android.os.Bundle; import android.os.Handler; import android.os.Message; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; /** * Created by xilingyuli on 2015/11/26. */ public class HttpPost extends Thread{ private String connStr; //连接字符串 private String method; //方法名 private String data; //发送的数据 private Message response; //返回的数据 HttpPost(String connStr, String method, String data, Message response) { this.connStr = connStr; this.method = method; this.data = data; this.response = response; } public void run() { if(connStr==null||connStr.equals("")||data==null) return; try { byte b[] = data.getBytes("utf-8"); URL url; if(method!=null) url = new URL(connStr+"/"+method); else url = new URL(connStr); //设置参数 HttpURLConnection con = (HttpURLConnection)url.openConnection(); con.setConnectTimeout(5000); con.setUseCaches(false); con.setDoOutput(true); con.setDoInput(true); con.setRequestMethod("POST"); //设置header con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); //写入数据 OutputStream os = con.getOutputStream(); os.write(b); os.flush(); os.close(); if(response==null) return; //处理返回的结果 /* * message.what是请求码,若请求码不是200,则返回 * 若请求码是200,请求成功,则封装数据。有方法名时数据key值为方法名,否则key值为"data" * 若出现异常,则数据key值为"error",value为异常详细信息 */ response.what = con.getResponseCode(); if(response.what==HttpURLConnection.HTTP_OK) { //向bos写入返回的数据 ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte buffer[] = new byte[1024]; InputStream is = con.getInputStream(); int count = -1; while ((count = is.read(buffer, 0, buffer.length)) != -1) bos.write(buffer, 0, count); is.close(); //封装数据 Bundle bd = new Bundle(); if(method!=null) bd.putString(method, bos.toString("utf-8")); else bd.putString("data", bos.toString("utf-8")); response.setData(bd); } con.disconnect(); response.sendToTarget(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); //处理异常 if(response==null) return; Bundle bd = new Bundle(); bd.putString("error",e.getMessage()); response.setData(bd); response.sendToTarget(); } } }
相关文章推荐
- http://haohaoxuexi.iteye.com/blog/1900568
- 用PHP模拟HTTP中的POST请求JSP网页,提交数据
- 源码五:HTTP网络的使用
- UNIX网络编程——Posix信号量
- delphi 获取网络图片
- XMLHttpRequest cannot load file:///D
- [spring]启动时报错:NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()
- Common-Hadoop HTTP web控制台认证
- 网络爬虫:基于对象持久化实现爬虫现场快速还原
- 网络爬虫:基于对象持久化实现爬虫现场快速还原
- 复习URLHttpConnection方式GET,POST方式链接网络解析uri
- 通过URLHttpConnection方式来取得图片,并且显示在ImageView上
- 通过URLHttpConnection方式连接网络步骤,获取位图为例
- TCP 的那些事儿(下)
- http://oldboy.blog.51cto.com/2561410/1717217
- TCP 的那些事儿(上)
- 此地址使用了一个通常用于网络浏览以外的端口。出于安全原因,Firefox 取消了该请求。
- windows下socket网络编程小节
- 《计算机网络-自顶向下方法》之网络边缘
- Java工具类--通过HttpClient发送http请求