@ResponseBody
@RequestMapping("queryWebUserList")
public String getUsersList(HttpServletRequest request, HttpServletResponse response,
@ModelAttribute WebUser webUser, @ModelAttribute PageModel pager) throws Exception{
String startTime = URLEncoder.encode(webUser.getIp()==null?"":webUser.getIp(), "utf-8");
String url = "http://www.vko.cn/queryRegUsersByTime?&pagerNum="+pager.getPage()+"&pagerSize="+pager.getRows()+"&startTime="+startTime;
String usersDetail = HttpUtil.sendGet(url);
Pagination<WebUser> pn = new Pagination<WebUser>();
usersDetail = usersDetail.substring(1, usersDetail.length()-1);//去除最前最后的双引号
usersDetail=usersDetail.replaceAll("\\\\", "");//反斜杠的替换
usersDetail=usersDetail.replaceAll("isteacher", "ip");
JSONObject json=JSONObject.fromObject(usersDetail);//将String类型转换为JSONObject类型
if(json.get("code").equals("success")) {
JSONObject dataJson=JSONObject.fromObject(json.get("data"));
if(dataJson != null && !dataJson.equals("") && !dataJson.equals("未查询到数据")) {
JSONObject pagerJson=JSONObject.fromObject(dataJson.get("pager"));
JSONArray listJson = JSONArray.fromObject(dataJson.get("list"));//将字符串转化为JSONArray(JSON数组)
String jsonstr = listJson.toString();
List<WebUser> users = JSON.parseArray(jsonstr, WebUser.class);//转化为list集合
pn.setPageIndex((Integer) pagerJson.get("pageNumber"));
pn.setPageRow((Integer) pagerJson.get("pageSize"));
pn.setRows(users);
pn.setTotal((Integer) pagerJson.get("recordCount"));
}
}
return this.writeJson(pn);
}
上面方法是对"{\"code\":\"success\",\"data\":{\"pager\":{\"first\":true,\"last\":false,\"offset\":0,\"pageCount\":116773,\"pageNumber\":1,\"pageSize\":2,\"recordCount\":233545},\"list\":[{\"id\":\"14827179987013405\",\"loginname\":\"15567969895\",\"registertime\":{\"date\":26,\"day\":1,\"hours\":10,\"minutes\":6,\"month\":11,\"nanos\":0,\"seconds\":38,\"time\":\"1482717998000\",\"timezoneOffset\":-480,\"year\":116},\"realname\":\"\",\"isteacher\":false},{\"id\":\"14827178021393137\",\"loginname\":\"15854618252\",\"registertime\":{\"date\":26,\"day\":1,\"hours\":10,\"minutes\":3,\"month\":11,\"nanos\":0,\"seconds\":22,\"time\":\"1482717802000\",\"timezoneOffset\":-480,\"year\":116},\"realname\":\"\",\"isteacher\":false}]},\"msg\":\"成功\"}"
这个返回过来的字符串进行转化,url实例:http://www.vko.cn/queryRegUsersByTime?&pagerNum=1&pagerSize=2&startTime=2016-1-22 00:00:00;
接受http传递过来的参数的接受方法:
package cn.vko.common.utils.http;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import org.apache.http.Header;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* http璋冪敤灏佽
*/
public final class HttpUtil {
private static Logger log = LoggerFactory.getLogger(HttpUtil.class);
public static String sendGet(String url) throws IOException {
return sendGet(url, HttpParam.init());
}
public static String sendGet(String url, HttpParam hp) throws IOException {
// 璁剧疆閫氱敤鍙傛暟
StringBuilder params = new StringBuilder();
if (hp.hasCommon()) {
params.append(url).append("?");
for (Entry<String, String> apm : hp.getCommonParams().entrySet()) {
params.append(apm.getKey()).append("=").append(apm.getValue()).append("&");
}
url = params.substring(0, params.lastIndexOf("&"));
}
HttpClient http = new DefaultHttpClient();
try {
HttpGet get = new HttpGet(url);
log.debug("send get with url={}", url);
// 璁剧疆Cookie鍐呭
if (hp.hasCookie()) {
StringBuilder cookies = new StringBuilder();
for (Entry<String, String> acm : hp.getCookieParams().entrySet()) {
cookies.append(acm.getKey()).append("=").append(acm.getValue()).append(";");
}
get.setHeader("Cookie", cookies.toString());
log.debug("\twith cookie锛歿}", cookies.toString());
}
// 璁剧疆鎸囧畾http-澶�
if (hp.hasHeader()) {
for (Entry<String, String> ahm : hp.getHeaderParams().entrySet()) {
get.setHeader(ahm.getKey(), ahm.getValue());
log.debug("\twith header锛歿}={}", ahm.getKey(), ahm.getValue());
}
}
return EntityUtils.toString(http.execute(get).getEntity(),"utf-8").trim();
} finally {
http.getConnectionManager().shutdown();
}
}
public static String sendPost(String url, HttpParam hp) throws IOException {
HttpClient http = new DefaultHttpClient();
try {
HttpPost post = new HttpPost(url);
log.debug("send post with url={}", url);
// 璁剧疆Cookie鍐呭
if (hp.hasCookie()) {
StringBuilder cookies = new StringBuilder();
for (Entry<String, String> acm : hp.getCookieParams().entrySet()) {
cookies.append(acm.getKey()).append("=").append(acm.getValue()).append(";");
}
post.setHeader("Cookie", cookies.toString());
log.debug("\twith cookie锛歿}", cookies.toString());
}
// 璁剧疆鎸囧畾http-澶�
if (hp.hasHeader()) {
for (Entry<String, String> ahm : hp.getHeaderParams().entrySet()) {
post.setHeader(ahm.getKey(), ahm.getValue());
log.debug("\twith header锛歿}={}", ahm.getKey(), ahm.getValue());
}
}
// 璁剧疆閫氱敤鍙傛暟
List<NameValuePair> paramList = new ArrayList<NameValuePair>();
if (hp.hasCommon()) {
for (Entry<String, String> apm : hp.getCommonParams().entrySet()) {
paramList.add(new BasicNameValuePair(apm.getKey(), apm.getValue()));
log.debug("\twith param锛歿}={}", apm.getKey(), apm.getValue());
}
}
post.setEntity(new UrlEncodedFormEntity(paramList, "UTF-8"));
return EntityUtils.toString(http.execute(post).getEntity()).trim();
} finally {
http.getConnectionManager().shutdown();
}
}
/**
* 浠讳綍寮傚父锛岃皟鐢ㄦ柟闇�嚜琛屽鐞�
*
* @param url post鍦板潃
* @param param 璇锋眰鍙傛暟
* @return 姝e父鍝嶅簲
* @throws Exception 鑷澶勭悊
*/
public static String sendPost(String url, String param) throws Exception {
byte[] data = param.getBytes();
DataOutputStream outs = null;
try {
URL javaUrl = new URL(url);
HttpURLConnection http = (HttpURLConnection) javaUrl.openConnection();
http.setConnectTimeout(10 * 1000);
http.setReadTimeout(20 * 1000);
http.setRequestMethod("POST");
http.setDoOutput(true);// 鍙戦�POST璇锋眰蹇呴』璁剧疆鍏佽杈撳嚭
http.setUseCaches(false);// 涓嶉�鐢╟ache
http.setRequestProperty("Connection", "Keep-Alive");
http.setRequestProperty("Charset", "utf-8");
http.setRequestProperty("Content-Length", String.valueOf(data.length));
http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
http.setRequestProperty("User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.149 Safari/537.36");
outs = new DataOutputStream(http.getOutputStream());
outs.write(data);
outs.flush();
if (http.getResponseCode() == 200) {
return new String(parseStream(http.getInputStream()), "utf-8");
}
} finally {
if (outs != null) {
outs.close();
}
}
return null;
}
private static byte[] parseStream(InputStream ins) throws Exception {
int len = -1;
byte[] data = null;
byte[] buffer = new byte[1024];
ByteArrayOutputStream outs = null;
try {
outs = new ByteArrayOutputStream();
while ((len = ins.read(buffer)) != -1) {
outs.write(buffer, 0, len);
}
outs.flush();
data = outs.toByteArray();
} finally {
if (outs != null) {
outs.close();
}
}
return data;
}
/**
* 浠嶤ookie鎻愬彇token淇℃伅
*
* @param heads 鍝嶅簲澶存暟缁�
* @return
*/
public static String pickTokenFromCookie(final Header[] heads) {
for (Header aHeader : heads) {
log.info("Cookie 锛�{}", aHeader.getValue());
if (aHeader.getValue().contains(HttpParam.COOKIE_TOKEN)) {
for (String avp : aHeader.getValue().split(";")) {
if (avp.contains(HttpParam.COOKIE_TOKEN)) {
return avp.split("=")[1];
}
}
}
}
return "";
}
}