android HttpClient访问网络获取数据
2014-12-03 23:01
337 查看
使用Apache提供的HttpClient接口同样可以进行HTTP操作。
private
static
String request(String url, HttpMethod method,List<BasicNameValuePair> params)
throws
IOException {
[align=left]
[/align]
String json =
null;
BufferedReader reader =
null;
[align=left]
[/align]
HttpClient client =
null;
try
{
client =
new
DefaultHttpClient();
[align=left] HttpParams httpParams = client.getParams();[/align]
httpParams.setParameter(CoreProtocolPNames.
USE_EXPECT_CONTINUE, false);
[align=left]
[/align]
HttpUriRequest request =
getRequest(url, params, method);
[align=left]
[/align]
Log.
d(TAG, "Sending:"
+ request.getURI() +
" params:"+ params.toString());
[align=left]
[/align]
[align=left] HttpResponse response = client.execute(request);[/align]
if
(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
{
reader =
new
BufferedReader(new
InputStreamReader(response
[align=left] .getEntity().getContent()));[/align]
StringBuilder sb =
new
StringBuilder();
for
(String s = reader.readLine(); s !=
null; s = reader
[align=left] .readLine()) {[/align]
[align=left] sb.append(s);[/align]
[align=left] }[/align]
[align=left] json = sb.toString();[/align]
[align=left]
[/align]
Log.
d(TAG,
json);
}
else
{
[align=left]
[/align]
Log.
e(TAG,
"Network response error:"+ response.getStatusLine().toString());
return
null
;
[align=left]
[/align]
[align=left] }[/align]
}
catch
(ClientProtocolException e) {
Log.
e(TAG,
e.getMessage(), e);
return
null
;
}
catch
(IOException e) {
Log.
e(TAG,
e.getMessage(), e);
throw
e;
}
finally
{
try
{
if
(reader !=
null) {
[align=left] reader.close();[/align]
[align=left] }[/align]
[align=left]
[/align]
if
(client !=
null) {
[align=left]
[/align]
[align=left] client.getConnectionManager().shutdown();[/align]
[align=left] }[/align]
[align=left]
[/align]
}
catch
(IOException e) {
// ignore me
throw
e;
[align=left] }[/align]
[align=left] }[/align]
return
json;
[align=left]
[/align]
[align=left] }[/align]
[align=left]
[/align]
private
static
HttpUriRequest getRequest(String url,
[align=left] List<BasicNameValuePair> params, HttpMethod method) {[/align]
if
(method.equals(HttpMethod.POST))
{
[align=left]
[/align]
try
{
UrlEncodedFormEntity entity =
new
UrlEncodedFormEntity(params,
"UTF-8");
HttpPost request =
new
HttpPost(url);
[align=left] request.setEntity(entity);[/align]
return
request;
}
catch
(UnsupportedEncodingException e) {
// Should not come here, ignore me.
throw
new
java.lang.RuntimeException(e.getMessage(), e);
[align=left] }[/align]
}
else
{
[align=left]
[/align]
// 对参数编码
String param = URLEncodedUtils.
format(params,
"UTF-8");
[align=left]
[/align]
HttpGet request =
new
HttpGet(url +
"?"
+ param);
return
request;
[align=left] }[/align]
[align=left] }[/align]
private
static
String request(String url, HttpMethod method,List<BasicNameValuePair> params)
throws
IOException {
[align=left]
[/align]
String json =
null;
BufferedReader reader =
null;
[align=left]
[/align]
HttpClient client =
null;
try
{
client =
new
DefaultHttpClient();
[align=left] HttpParams httpParams = client.getParams();[/align]
httpParams.setParameter(CoreProtocolPNames.
USE_EXPECT_CONTINUE, false);
[align=left]
[/align]
HttpUriRequest request =
getRequest(url, params, method);
[align=left]
[/align]
Log.
d(TAG, "Sending:"
+ request.getURI() +
" params:"+ params.toString());
[align=left]
[/align]
[align=left] HttpResponse response = client.execute(request);[/align]
if
(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
{
reader =
new
BufferedReader(new
InputStreamReader(response
[align=left] .getEntity().getContent()));[/align]
StringBuilder sb =
new
StringBuilder();
for
(String s = reader.readLine(); s !=
null; s = reader
[align=left] .readLine()) {[/align]
[align=left] sb.append(s);[/align]
[align=left] }[/align]
[align=left] json = sb.toString();[/align]
[align=left]
[/align]
Log.
d(TAG,
json);
}
else
{
[align=left]
[/align]
Log.
e(TAG,
"Network response error:"+ response.getStatusLine().toString());
return
null
;
[align=left]
[/align]
[align=left] }[/align]
}
catch
(ClientProtocolException e) {
Log.
e(TAG,
e.getMessage(), e);
return
null
;
}
catch
(IOException e) {
Log.
e(TAG,
e.getMessage(), e);
throw
e;
}
finally
{
try
{
if
(reader !=
null) {
[align=left] reader.close();[/align]
[align=left] }[/align]
[align=left]
[/align]
if
(client !=
null) {
[align=left]
[/align]
[align=left] client.getConnectionManager().shutdown();[/align]
[align=left] }[/align]
[align=left]
[/align]
}
catch
(IOException e) {
// ignore me
throw
e;
[align=left] }[/align]
[align=left] }[/align]
return
json;
[align=left]
[/align]
[align=left] }[/align]
[align=left]
[/align]
private
static
HttpUriRequest getRequest(String url,
[align=left] List<BasicNameValuePair> params, HttpMethod method) {[/align]
if
(method.equals(HttpMethod.POST))
{
[align=left]
[/align]
try
{
UrlEncodedFormEntity entity =
new
UrlEncodedFormEntity(params,
"UTF-8");
HttpPost request =
new
HttpPost(url);
[align=left] request.setEntity(entity);[/align]
return
request;
}
catch
(UnsupportedEncodingException e) {
// Should not come here, ignore me.
throw
new
java.lang.RuntimeException(e.getMessage(), e);
[align=left] }[/align]
}
else
{
[align=left]
[/align]
// 对参数编码
String param = URLEncodedUtils.
format(params,
"UTF-8");
[align=left]
[/align]
HttpGet request =
new
HttpGet(url +
"?"
+ param);
return
request;
[align=left] }[/align]
[align=left] }[/align]
相关文章推荐
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- android通过 httpClient 的post访问 网络数据
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android HttpClient多线程获取网络数据抛出ConnectionPoolTimeoutException: Timeout waiting for connection
- Android之网络----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android之网络----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
- Android 通过HttpClient访问服务器获取XML
- Android访问网络,使用HttpURLConnection还是HttpClient?
- Android访问网络,使用HttpURLConnection还是HttpClient?
- android获取URLConnection和HttpClient网络请求响应码