1. 程式人生 > >連網工具類,get,post請求

連網工具類,get,post請求

public class HttpHelper {

private final int HTTP_SECCESS=2000;

private final int HTTP_FAIL=2001;
private HttpListener listener;

public HttpHelper(){}

//get請求
public HttpHelper get(String url){
    doHttp(url,"GET",null);
    return this;

}

//post請求
public HttpHelper post(String url,String string){
    doHttp(url,"POST",string);
    return this;
}

//抽取的聯網程式碼

public void doHttp(final String pathUrl,final String method,final String string){
    new Thread(){
        @Override
        public void run() {
            super.run();

            try {
                URL url=new URL(pathUrl);
                HttpURLConnection connection=(HttpURLConnection) url.openConnection();
                connection.setRequestMethod(method);
                connection.setConnectTimeout(5000);

                if("POST".equals(method)){
                    PrintWriter printWriter=new PrintWriter(connection.getOutputStream());
                    printWriter.write(string);
                    printWriter.flush();
                    printWriter.close();
                }

                connection.connect();
               int code= connection.getResponseCode();

               Message message=Message.obtain();
               if(code==HttpURLConnection.HTTP_OK){//成功
                   InputStream is = connection.getInputStream();
                   String data=convertStream2String(is);
                   message.what=HTTP_SECCESS;
                   message.obj=data;

               }else{//失敗
                   message.what=HTTP_FAIL;
               }

               handler.sendMessage(message);

            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }.start();
}

private Handler handler=new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        switch (msg.what){
            case HTTP_SECCESS:
                String data= (String) msg.obj;
                listener.success(data);
                break;
            case HTTP_FAIL:
                listener.fail();
                break;
        }
    }
};

public void result(HttpListener listener){
    this.listener=listener;
}

public interface HttpListener{
    void success(String data);
    void  fail();
}

public  String convertStream2String(InputStream input){
    ByteArrayOutputStream baos = new ByteArrayOutputStream();// 自帶快取的輸出流
    int len=-1;
    byte [] buffer = new byte[512];
    try {
        while((len = input.read(buffer))!=-1){
            baos.write(buffer, 0, len); // 將讀到的位元組,寫入baos
        }
        return new String(baos.toByteArray());
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

}