http方式传递数据,JSON数据的解析等

@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 "";
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值