码迷,mamicode.com
首页 > Web开发 > 详细

用httpPost对JSON发送和接收的例子

时间:2015-05-04 12:08:16      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:json   httppost   

HTTPPost发送JSON:

private static final String APPLICATION_JSON = "application/json";
    
    private static final String CONTENT_TYPE_TEXT_JSON = "text/json";

public static void httpPostWithJSON(String url, String json) throws Exception {
        // 将JSON进行UTF-8编码,以便传输中文
        String encoderJson = URLEncoder.encode(json, HTTP.UTF_8);
        
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);
        httpPost.addHeader(HTTP.CONTENT_TYPE, APPLICATION_JSON);
        
        StringEntity se = new StringEntity(encoderJson);
        se.setContentType(CONTENT_TYPE_TEXT_JSON);
        se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, APPLICATION_JSON));
        httpPost.setEntity(se);
        httpClient.execute(httpPost);
    }

接收HTTPPost中的JSON:

public static String receivePost(HttpServletRequest request) throws IOException, UnsupportedEncodingException {
        
        // 读取请求内容
        BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream()));
        String line = null;
        StringBuilder sb = new StringBuilder();
        while((line = br.readLine())!=null){
            sb.append(line);
        }

        // 将资料解码
        String reqBody = sb.toString();
        return URLDecoder.decode(reqBody, HTTP.UTF_8);
    }


以上摘自:http://chaico.iteye.com/blog/1954128

以下为自己开发实例:

接收HTTPPost中的JSON,并且通过Gson解析:

import com.google.gson.Gson;  
public AttendanceInfo getAttendanceInfoFromBbchat(){
		 // 读取请求内容
		ToftContext context = ToftContext.getToftContext();
		try {
			InputStream in = context.getRequest().getInputStream();
		    BufferedReader br = new BufferedReader(new InputStreamReader(in));
		    StringBuffer stringBuffer = new StringBuffer();
			String str = "";
			while ((str = br.readLine()) != null) {
				stringBuffer.append(str);
			}
			String info = stringBuffer.toString();
			if(StringUtils.isNotBlank(info)){
				Gson gson = new Gson();
				AttendanceInfo attendanceInfo = gson.fromJson(info, AttendanceInfo.class);
				if(StringUtils.isNotBlank(attendanceInfo.getToken())){
					context.getRequest().setAttribute("token", attendanceInfo.getToken());
				}
				return attendanceInfo;
			}
		}catch (Exception e) {
			// TODO: handle exception
			log.error("bbchat 解析邦邦社区考勤json参数出现异常");
			e.printStackTrace();
		}
		return null;
	}



HTTPPost发送JSON:

	public static String pushAttendanceInfo(){
		String url = "http://ibb.anbanggroup.com:8080/push/push";
		HttpClient httpClient = new HttpClient();
		// 设置连接超时时间(单位毫秒)
		httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(60*1000);
		// 设置读取超时时间(单位毫秒)
		httpClient.getHttpConnectionManager().getParams().setSoTimeout(60*1000);
		PostMethod method = new PostMethod(url);
		String info = null;
		try {
			String aaa = "{\"token\": \"ee32da94162d4b688af2b0241db4600a\",\"touser\":\"AB044979\""+
			     ",\"msgtype\":\"text\",\"msg\":{\"content\": \"Hello\"},\"start\":\"\",\"end\":\"2015-05-30 00:00:00\"}";
			RequestEntity entity = new StringRequestEntity(aaa, "application/json", "UTF-8");
			method.setRequestEntity(entity);
			httpClient.executeMethod(method);
			int code = method.getStatusCode();
			if (code == HttpStatus.SC_OK) {
				BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream()));
				StringBuffer stringBuffer = new StringBuffer();
				String str = "";
				while ((str = reader.readLine()) != null) {
					stringBuffer.append(str);
				}
				info = stringBuffer.toString();
				log.info("bbchat 返回报文:"+info);
			}else{
				log.error("bbchat 接口返回失败  httpStatusCode="+code);
			}

		} catch (Exception ex) {
			ToftLogger.error("内部接口报文发送异常:" + ex.getMessage());
			ex.printStackTrace();
		} finally {
			if (method != null) {
				method.releaseConnection();
			}
		}
		return info;
	}

HTTPPost发送参数:

	/**
	 * 考勤推送接口登陆
	 * @return
	 */
	public static String loginAttendancePush(){
		String url = "http://ibb.anbanggroup.com:8080/authenticate/ablogin";
		HttpClient httpClient = new HttpClient();
		// 设置连接超时时间(单位毫秒)
		httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(60*1000);
		// 设置读取超时时间(单位毫秒)
		httpClient.getHttpConnectionManager().getParams().setSoTimeout(60*1000);
		PostMethod method = new PostMethod(url);
		String info = null;
		try {
			method.setParameter("username", "27607");
			method.setParameter("password", "cd55abee1c0ef6d4525a223faf00c96a193576f58ceb39b9");
			httpClient.executeMethod(method);
			int code = method.getStatusCode();
			if (code == HttpStatus.SC_OK) {
				BufferedReader reader = new BufferedReader(new InputStreamReader(method.getResponseBodyAsStream()));
				StringBuffer stringBuffer = new StringBuffer();
				String str = "";
				while ((str = reader.readLine()) != null) {
					stringBuffer.append(str);
				}
				info = stringBuffer.toString();
				log.info("bbchat 返回报文:"+info);
			}else{
				log.error("bbchat 接口返回失败  httpStatusCode="+code);
			}

		} catch (Exception ex) {
			ToftLogger.error("内部接口报文发送异常:" + ex.getMessage());
			ex.printStackTrace();
		} finally {
			if (method != null) {
				method.releaseConnection();
			}
		}
		return info;
	}



用httpPost对JSON发送和接收的例子

标签:json   httppost   

原文地址:http://blog.csdn.net/linzhongxia2015/article/details/45476481

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!