HTTP通訊(HttpURLConnection)

 

Android發送HTTP請求有兩種,HttpURLConnection和HttpClient
用法:
1.獲取HttpURLConnection實例
new一個URL對象,傳入一個網絡地址;而後調用openConnection方法
 
2.設置HTTP請求的方法
經常使用的方法有兩種:GET和POST方法,GET:從服務器獲取數據;POST:發送數據給服務器
 
3.設置一些東西
好比設置鏈接超時,讀取超時,服務器但願獲得的消息頭等
 
4.getInputStream獲取服務器返回的輸入流
 
5.對輸入流進行讀取
 
6.disconnect關閉HTTP鏈接

private void sendResquestWithURLConnection(){
new Thread(new Runnable() {
@Override
public void run() {
HttpURLConnection connection = null;
try{
URL url = new URL("http://www.baidu.com");
connection = (HttpURLConnection) url.openConnection();

connection.setRequestMethod("GET");

connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);

InputStream in = connection.getInputStream();

BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder response = new StringBuilder();
String line;
while((line = reader.readLine()) != null){
response.append(line);
}
Message message = new Message();
message.what = SHOW_RESPONSE;

message.obj = response.toString();
handler.sendMessage(message);
}catch(Exception e){
e.printStackTrace();
}finally{
if (connection != null){
connection.disconnect();
}
}
}
}).start();

private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case SHOW_RESPONSE:
String response = (String)msg.obj;
responseText.setText(response);
}

}
};

 
  
@Override
protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    sendRequest = (Button) findViewById(R.id.send_request);    responseText = (TextView) findViewById(R.id.response_text);    sendRequest.setOnClickListener(this);}@Overridepublic void onClick(View v) {if (v.getId() == R.id.send_request){        sendResquestWithURLConnection();    }}
相關文章
相關標籤/搜索