java接收 post_Java get、post请求与接收post请求数据

该博客介绍了如何使用Java处理HTTP GET和POST请求,包括发送POST请求并接收POST请求数据的方法。通过Apache HttpClient库进行HTTP操作,如设置请求参数,解析响应内容,并展示了从HttpServletRequest获取POST请求体的示例。
摘要由CSDN通过智能技术生成

import java.io.BufferedInputStream;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Date;

import java.util.List;

import java.util.Map;

import java.util.Set;

import javax.servlet.http.HttpServletRequest;

import me.chanjar.weixin.common.util.RandomUtils;

import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;

import net.sf.json.JSONObject;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.HttpStatus;

import org.apache.http.NameValuePair;

import org.apache.http.ParseException;

import org.apache.http.client.ClientProtocolException;

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.client.methods.HttpUriRequest;

import org.apache.http.entity.StringEntity;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.message.BasicNameValuePair;

import org.apache.http.protocol.HTTP;

import org.apache.http.util.EntityUtils;public classHttpClientRequet {public static String post(String url, Map params) {

DefaultHttpClient httpclient= newDefaultHttpClient();

String body= null;

HttpPost post= postForm(url, params);

body=invoke(httpclient, post);

httpclient.getConnectionManager().shutdown();returnbody;

}public static String get(String url) {

DefaultHttpClient httpclient= newDefaultHttpClient();

String body= null;

HttpGetget = newHttpGet(url);

body= invoke(httpclient, get);

httpclient.getConnectionManager().shutdown();returnbody;

}private staticString invoke(DefaultHttpClient httpclient, HttpUriRequest httpost) {

HttpResponse response=sendRequest(httpclient, httpost);

String body=paseResponse(response);returnbody;

}private staticString paseResponse(HttpResponse response) {

HttpEntity entity=response.getEntity();

String charset=EntityUtils.getContentCharSet(entity);

String body= null;try{

body=EntityUtils.toString(entity);

}catch(ParseException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}returnbody;

}private staticHttpResponse sendRequest(DefaultHttpClient httpclient, HttpUriRequest httpost) {

HttpResponse response= null;try{

response=httpclient.execute(httpost);

}catch(ClientProtocolException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}returnresponse;

}private static HttpPost postForm(String url, Map params) {

HttpPost httpost= newHttpPost(url);

List nvps = new ArrayList();

Set keySet = params.keySet();for(String key : keySet) {

nvps.add(new BasicNameValuePair(key, params.get(key)));

}try{

httpost.setEntity(newUrlEncodedFormEntity(nvps, HTTP.UTF_8));

}catch(UnsupportedEncodingException e) {

e.printStackTrace();

}returnhttpost;

}public staticJSONObject httpPostJson(String url, String json) {

HttpPost httpPost= newHttpPost(url);try{

httpPost.setEntity(newStringEntity(json));

}catch(UnsupportedEncodingException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

HttpClient client= newDefaultHttpClient();try{

HttpResponse res=client.execute(httpPost);if (res.getStatusLine().getStatusCode() ==HttpStatus.SC_OK) {

HttpEntity entity=res.getEntity();

String result= EntityUtils.toString(entity,"utf-8");//返回json格式:

JSONObject response =JSONObject.fromObject(result);returnresponse;

}

}catch(ClientProtocolException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}return null;

}public staticString getRequestBodyStr(HttpServletRequest request) {

String bodyStr= "";

System.out.println("开始解析request body");try{

BufferedInputStream buffer= newBufferedInputStream(

request.getInputStream());int cLen = 0, bufLen = 0;byte[] result = new byte[4096];byte[] buf = new byte[4096];while ((bufLen = buffer.read(buf)) > 0) {if (bufLen > result.length -cLen) {byte[] tmp = new byte[result.length + 4096];

System.arraycopy(result,0, tmp, 0, cLen);

result=tmp;

}

System.arraycopy(buf,0, result, cLen, bufLen);

cLen+=bufLen;

}

StringBuilder body= new StringBuilder(newString(Arrays.copyOf(

result, cLen),"UTF-8"));

bodyStr=body.toString();if (bodyStr != null && !bodyStr.equals("")) {

System.out.println("接口调用" + ":请求内容体:" +bodyStr);

}else{

System.out.println("接口调用" + ":请求体文本流为空");return "";

}

}catch(Exception e) {

System.out.println("接口调用" + ":请求内容体解析异常:" +e.getMessage());

e.printStackTrace();

}returnbodyStr;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值