安卓Http Post请求封装类

来源:互联网 发布:wind数据库多少钱 编辑:程序博客网 时间:2024/05/21 04:00

自己封装了一个安卓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();        }    }}

0 0
原创粉丝点击