使用Apache提供的HttpClient接口同样可以进行HTTP操作。
private
static
String request(String url, HttpMethod method,
List<BasicNameValuePair> params)
throws
IOException {
String json =
null
;
BufferedReader reader =
null
;
HttpClient client =
null
;
try
{
client =
new
DefaultHttpClient();
HttpParams httpParams = client.getParams();
httpParams.setParameter(CoreProtocolPNames.
USE_EXPECT_CONTINUE
,
false
);
HttpUriRequest request = getRequest(url, params, method);
Log. d(
TAG
,
"Sending:"
+ request.getURI() +
" params:"
+ params.toString());
HttpResponse response = client.execute(request);
if
(response.getStatusLine().getStatusCode() == HttpStatus.
SC_OK
) {
reader =
new
BufferedReader(
new
InputStreamReader(response
.getEntity().getContent()));
StringBuilder sb =
new
StringBuilder();
for
(String s = reader.readLine(); s !=
null
; s = reader
.readLine()) {
sb.append(s);
}
json = sb.toString();
Log. d(
TAG
, json);
}
else
{
Log. e(
TAG
,
"Network response error:"
+ response.getStatusLine().toString());
return
null
;
}
}
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
) {
reader.close();
}
if
(client !=
null
) {
client.getConnectionManager().shutdown();
}
}
catch
(IOException e) {
// ignore me
throw
e;
}
}
return
json;
}
private
static
HttpUriRequest getRequest(String url,
List<BasicNameValuePair> params, HttpMethod method) {
if
(method.equals(HttpMethod.
POST
)) {
try
{
UrlEncodedFormEntity entity =
new
UrlEncodedFormEntity(params,
"UTF-8"
);
HttpPost request =
new
HttpPost(url);
request.setEntity(entity);
return
request;
}
catch
(UnsupportedEncodingException e) {
// Should not come here, ignore me.
throw
new
java.lang.RuntimeException(e.getMessage(), e);
}
}
else
{
// 对参数编码
String param = URLEncodedUtils. format(params,
"UTF-8"
);
HttpGet request =
new
HttpGet(url +
"?"
+ param);
return
request;
}
}