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;
}
}