Http通訊(HttpClient)

   HttpURLConnection是java.net.*包提供的類,但java JDK 庫自己功能還不夠豐富和靈活;
Apache HttpClient是一個開源項目,功能更加完善,彌補了java.net.*靈活性不足的缺點。
 
    使用HttpClient接口要加入httpclient-4.3.1.jar相關的jar包
private void getHttpClientConnection(String url){
final String getUrl = url;
new Thread(new Runnable() {//新建一個子線程
String getUrl2 = getUrl;
@Override
public void run() {
HttpClient hc = new DefaultHttpClient();//1.建立一個HttpClient,(DefaultHttpClient表示默認屬性)
HttpGet hg = new HttpGet(getUrl2);//2.HttpGet實例,經過GET方法
InputStream in = null;
StringBuffer sb = null;
try{
HttpResponse hr = hc.execute(hg);//3.HttpResponse Http響應,HttpClient執行HttpGet方法
//鏈接成功
if ((hr.getStatusLine().getStatusCode()) == 200){//4.獲得響應碼,若是==200,鏈接成功
in = hr.getEntity().getContent();//5.獲取返回的數據 InPutStream流獲取響應獲得的內容
BufferedReader br = new BufferedReader(new InputStreamReader(in));//BufferedReader讀取數據流
char[] buf = new char[1024];
int longth = 0;
sb = new StringBuffer();
while((longth = br.read(buf)) != -1){//讀取BufferedReader,放入StringBuffer
sb.append(buf,0,longth);
}

}
}catch(IOException e){
e.printStackTrace();
}finally{
if (in != null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Message message = new Message();//新建Message
message.what = CHANGE_TEXT;
message.obj = sb.toString();//Message.obj獲得StringBuffer的內容
handler.sendMessage(message);//sendMessage

}
}).start();
}
-----------------------------------------
類中建一個Handler接收message
private static final int CHANGE_TEXT = 1;private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if (msg.what == CHANGE_TEXT){textView.setText(msg.obj.toString());        }    }};
相關文章
相關標籤/搜索