httpclient如何獲取請求引數
阿新 • • 發佈:2019-01-06
目的
如何獲取前臺get請求的引數
/**
* 返回get方法 填充前臺傳送來的引數
*
* @param uri 要請求的介面地址
* @param request 前臺請求過來後 controller層請求物件
* @author piper
* @data 2018/7/3 11:19
*/
HttpGet getMethod(String uri, HttpServletRequest request) {
try {
URIBuilder builder = new URIBuilder(uri);
Enumeration<String> enumeration = request.getParameterNames();
//將前臺的引數放到我的請求裡面
while (enumeration.hasMoreElements()) {
String nex = enumeration.nextElement();
builder.setParameter(nex, request.getParameter(nex));
}
return new HttpGet(builder.build());
} catch ( URISyntaxException e) {
e.printStackTrace();
}
return null;
}
如何獲取post請求的引數
post請求時可能傳的是form表單,也可能是json資料
如何判斷前臺傳送的是json資料?通過request物件的ContentType請求頭可以判斷
如果是json,Content-Type應該是application-json;charset=utf-8,所以獲取請求頭判斷就行了
/**
* 返回post方法
*
* @param uri 要請求的地址
* @param request 前臺請求物件
* @author piper
* @data 2018/7/3 11:19
*/
HttpPost postMethod(String uri, HttpServletRequest request) {
StringEntity entity = null;
if (request.getContentType().contains("json")) {
entity = jsonData(request); //填充json資料
} else {
entity = formData(request); //填充form資料
}
HttpPost httpPost = new HttpPost(uri);
httpPost.setHeader("Content-Type", request.getHeader("Content-Type"));
httpPost.setEntity(entity);
return httpPost;
}
獲取post請求的form表單資料
/**
* 處理post請求 form資料 填充form資料
*
* @param request 前臺請求
* @author piper
* @data 2018/7/17 18:05
*/
public UrlEncodedFormEntity formData(HttpServletRequest request) {
UrlEncodedFormEntity urlEncodedFormEntity = null;
try {
List<NameValuePair> pairs = new ArrayList<>(); //儲存引數
Enumeration<String> params = request.getParameterNames(); //獲取前臺傳來的引數
while (params.hasMoreElements()) {
String name = params.nextElement();
pairs.add(new BasicNameValuePair(name, request.getParameter(name)));
}
//根據引數建立引數體,以便放到post方法中
urlEncodedFormEntity = new UrlEncodedFormEntity(pairs, request.getCharacterEncoding());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return urlEncodedFormEntity;
}
獲取post請求的json資料
/**
* 處理post請求 json資料
*
* @param request 前臺請求
* @author piper
* @data 2018/7/17 18:05
*/
public StringEntity jsonData(HttpServletRequest request) {
InputStreamReader is = null;
try {
is = new InputStreamReader(request.getInputStream(), request.getCharacterEncoding());
BufferedReader reader = new BufferedReader(is);
//將json資料放到String中
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
//根據json資料建立請求體
return new StringEntity(sb.toString(), request.getCharacterEncoding());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}