使用HttpURLConnection
1.首先要获得HttpURLConnection实例,一般需要new出一个URL对象并传入目标的网络地址,然后调用一下openConnection()方法。
<span style="font-family:Microsoft YaHei;font-size:14px;">URL url = new URL("http://www.baidu.com");
connection =(HttpURLConnection)url.openConnection();</span>
2.得到HttpURLConnection实例后,可以设置一下请求方式
<span style="font-family:Microsoft YaHei;font-size:14px;">connection.setRequestMethod("GET");</span>
还可以进行一些定制,如连接超时,读取超时的毫秒数
<span style="font-family:Microsoft YaHei;font-size:14px;">connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);</span>
<span style="font-family:Microsoft YaHei;font-size:14px;">InputStream in =connection.getInputStream();</span>
4.最后可以调用disconnect()方法将这个HTTP连接关掉
<span style="font-family:Microsoft YaHei;font-size:14px;">connection.disconnect();</span>
<span style="font-family:Microsoft YaHei;font-size:14px;"> public static void sendHttpRequest(final String address,final HttpCallbackListener listener){
new Thread(new Runnable() {
@Override
public void run() {
HttpsURLConnection connection = null;
try {
URL url = new URL(address);
connection = (HttpsURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
InputStream in = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder respone = new StringBuilder();
String line;
while( (line =reader.readLine())!= null){
respone.append(line);
}
if (listener !=null){
listener.onFinish(respone.toString());
}
} catch (Exception e) {
if (listener != null){
listener.onError(e);
}
}finally{
if (connection != null){
connection.disconnect();
}
}
}
}).start();
}</span>
1.HttpClient是一个接口无法创建实例,通常情况下会创建一个DefaultHttpClient实例
<span style="font-family:Microsoft YaHei;font-size:14px;">HttpClient httpClient = new DefaultHttpClient();</span>
<span style="font-family:Microsoft YaHei;font-size:14px;">HttpGet httpGet = new HttpGet("http://www.baidu.com");</span>
<span style="font-family:Microsoft YaHei;font-size:14px;">HttpResponse httpResponse = httpClient.execute(httpGet);
</span>
执行execute()方法后,会返回一个HttoResponse对象,服务器的信息都包含在里面,通常先取出服务器返回的状态码,如果等于200说明请求和响应都成功了
<span style="font-family:Microsoft YaHei;font-size:14px;">if (httpResponse.getStatusLine().getStatusCode()== 200){</span>
<span style="font-family:Microsoft YaHei;font-size:14px;"><span style="white-space:pre"> </span>//返回成功</span>
<span style="font-family:Microsoft YaHei;font-size:14px;">}</span>
在if内部取出服务器返回的具体内容,可调用getEntity()方法获取到一个HttpEntity实例,再用EntityUtils.toString()方法将HttpEntity转换为字符串
<span style="font-family:Microsoft YaHei;font-size:14px;">HttpEntity entity = httpResponse.getEntity();
String response = EntityUtils.toString(entity,"utf-8");</span>
<span style="font-family:Microsoft YaHei;font-size:14px;"> private void sendRequestWithHttpClient(){
new Thread(new Runnable(){
public void run(){
try{
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://192.168.1.102/get_data.xml");
HttpResponse httpResponse = httpClient.execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode()== 200){
HttpEntity entity = httpResponse.getEntity();
String response = EntityUtils.toString(entity,"utf-8");
Message message = new Message();
message.what = SHOW_RESPONSE;
message.obj = response.toString();
handler.sendMessage(message);
}
}catch (IOException e){
e.printStackTrace();
}
}
}).start();
}</span>