package com.ice.tools;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
public class ReceiveWechatByHttp {
public Map receive(String url){
//生成httpclient
HttpClient httpClient = new DefaultHttpClient();
//get请求
HttpGet httpGet = new HttpGet(url);
Map<String, Object> map = null;
try {
//httpclient执行get请求,并获得请求结果
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
String responseContent = EntityUtils.toString(httpEntity,"utf-8");
//这里使用jackson 将网络返回的对像转化为map对象
ObjectMapper objectMapper = new ObjectMapper();
map = objectMapper.readValue(responseContent,Map.class);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
httpClient.getConnectionManager().shutdown();
}
return map;
}
}
上面是比较过时的,httpclient对象在已经过时了,下面的最新的http client写法,官网的demo
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet("http://targethost/homepage");
CloseableHttpResponse response1 = httpclient.execute(httpGet);
// The underlying HTTP connection is still held by the response object
// to allow the response content to be streamed directly from the network socket.
// In order to ensure correct deallocation of system resources
// the user MUST call CloseableHttpResponse#close() from a finally clause.
// Please note that if response content is not fully consumed the underlying
// connection cannot be safely re-used and will be shut down and discarded
// by the connection manager.
try {
System.out.println(response1.getStatusLine());
HttpEntity entity1 = response1.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity1);
} finally {
response1.close();
}
HttpPost httpPost = new HttpPost("http://targethost/login");
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("username", "vip"));
nvps.add(new BasicNameValuePair("password", "secret"));
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2 = httpclient.execute(httpPost);
try {
System.out.println(response2.getStatusLine());
HttpEntity entity2 = response2.getEntity();
// do something useful with the response body
// and ensure it is fully consumed
EntityUtils.consume(entity2);
} finally {
response2.close();
}
package com.ice.tools;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
public class ReceiveWechatByHttp {
/**
* 通过url获取网络请求的信息
*
* @param url
* @return
*/
// @SuppressWarnings({ "unchecked", "deprecation" })
// public static Map<Object,Object> receive(String url){
// //生成httpclient
// @SuppressWarnings("resource")
// HttpClient httpClient = new DefaultHttpClient();
// //get请求
// HttpGet httpGet = new HttpGet(url);
// Map<Object, Object> map = null;
// try {
// //httpclient执行get请求,并获得请求结果
// HttpResponse httpResponse = httpClient.execute(httpGet);
//
// HttpEntity httpEntity = httpResponse.getEntity();
// String responseContent = EntityUtils.toString(httpEntity,"utf-8");
//
// //这里使用jackson 将网络返回的对像转化为map对象
// ObjectMapper objectMapper = new ObjectMapper();
// if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
// map = objectMapper.readValue(responseContent,Map.class);
// }
//
//
// } catch (Exception e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }finally {
// httpClient.getConnectionManager().shutdown();
// }
// return map;
// }
public static String getHttpContent(String url) throws Exception {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(url);
CloseableHttpResponse response = null;
String responseContent = null;
try {
response = httpClient.execute(httpGet);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
HttpEntity entity = response.getEntity();
responseContent = EntityUtils.toString(entity, "utf-8");
System.out.println(responseContent);
}
} finally {
response.close();
}
return responseContent;
}
//自己的业务,需要转换成map
@SuppressWarnings("unchecked")
public static Map<Object, Object> receive(String url) {
String responseContent;
Map<Object, Object> map = null;
try {
responseContent = getHttpContent(url);
ObjectMapper objectMapper = new ObjectMapper();
map = objectMapper.readValue(responseContent, Map.class);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return map;
}
public static void main(String[] args) {
try {
getHttpContent("http://www.baidu.com");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}