怎样在Java代码中利用httpClient发送post、get请求
1、get请求
发出http请求:
HttpClientUtils.getValidataImage(请求的URL+请求参数,response)
创建执行请求的httpClient:
CloseableHttpClient httpClient = HttpClients.createDefault();
发送get请求
HttpGet request = new HttpGet(url);
CloseableHttpResponse response = httpClient.execute(request);
请求发送成功,并得到响应
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
/**读取服务器返回过来的json字符串数据**/
HttpEntity resEntity = response.getEntity();
resEntity = response.getEntity();
InputStream inputStream = resEntity.getContent();
byte[] buff = new byte[1024];
int length = 0;
while ((length = inputStream.read(buff)) != -1) {
httpServletResponse.getOutputStream().write(buff, 0, length);
}
EntityUtils.consume(resEntity);
response.close();
} else {
logger.error("get请求提交失败:" + url);
}
发出http请求:
HttpClientUtils.getValidataImage(请求的URL+请求参数,response)
创建执行请求的httpClient:
CloseableHttpClient httpClient = HttpClients.createDefault();
发送get请求
HttpGet request = new HttpGet(url);
CloseableHttpResponse response = httpClient.execute(request);
请求发送成功,并得到响应
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
/**读取服务器返回过来的json字符串数据**/
HttpEntity resEntity = response.getEntity();
resEntity = response.getEntity();
InputStream inputStream = resEntity.getContent();
byte[] buff = new byte[1024];
int length = 0;
while ((length = inputStream.read(buff)) != -1) {
httpServletResponse.getOutputStream().write(buff, 0, length);
}
EntityUtils.consume(resEntity);
response.close();
} else {
logger.error("get请求提交失败:" + url);
}
2、post请求
发出http请求:
String result = HttpClientUtils.httpUpload(请求URL, 请求参数, 上传文件);
创建执行请求的httpClient:
CloseableHttpClient httpClient = HttpClients.createDefault();
创建builder
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
设置浏览器兼容模式
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);//设置浏览器兼容模式
创建httppost
HttpPost httppost = new HttpPost(url);
处理上传附件(封装文件)
for (int i = 0; i < files.size(); i++) {
File file = files.get(i).getFile();
if(file.isFile()){
fileUrl.add(file.getPath());
}
String uploadFilePath = ImageZipUtil.zipImageFile(file, new File(StaticVariable.UPLOADPATH+"\\"+file.getName()), 425, 638, 0.7f);
File uploadFile = new File(uploadFilePath);
if(uploadFile.isFile()){
fileUrl.add(uploadFilePath);
builder.addBinaryBody("alterpic_picname"+(num), uploadFile);//file1为请求后台的File upload;属性
num++;
}
}
处理请求参数(封装普通参数)
Set<String> keySet = params.keySet();
for(String key : keySet) {
String value = params.get(key);
builder.addTextBody(key, value);//filename1为请求后台的普通参数;属性
}
生产httppost请求
HttpEntity entity = builder.build();// 生成 HTTP POST 实体
httppost.setEntity(entity); 设置实体
执行httppost请求
HttpResponse response = httpClient.execute(httppost);
处理返回信息
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode == HttpStatus.SC_OK){
try {
/**读取服务器返回过来的json字符串数据**/
jsonResult = EntityUtils.toString(response.getEntity());
for (String string : fileUrl) {
CommUtil.deleteFile(string);
}
} catch (Exception e) {
logger.error("post请求提交失败:" + url, e);
}
}
} catch (ParseException e) {
// TODO Auto-generated catch block
logger.error("post请求提交失败:" + url, e);
}finally {
try {
httpClient.close();
} catch (Exception ignore) {
logger.error("", ignore);
}
}