連網工具類,get,post請求
阿新 • • 發佈:2018-12-11
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; }
}