post请求方法和get请求方法
package com.xkeshi.paymentweb.controllers.test;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by jiangzw on 2017/11/3.
*/
public class MyTestHttpClient {
/**
* post方式提交表单(模拟用户登录请求)
*/
public static void doFormPost() {
// 创建默认的httpClient实例.
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建httppost
String url = "http://localhost:8888/myTest/testHttpClientPost";
HttpPost httppost = new HttpPost(url);
// 创建参数队列
List<NameValuePair> formparams = new ArrayList<NameValuePair>();
formparams.add(new BasicNameValuePair("username", "admin"));
formparams.add(new BasicNameValuePair("password", "123456"));
UrlEncodedFormEntity entity = null;
try {
entity = new UrlEncodedFormEntity(formparams, "UTF-8");
httppost.setEntity(entity);
System.out.println("executing request " + httppost.getURI());
CloseableHttpResponse response = httpclient.execute(httppost);
try {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
System.out.println("Response content: " + EntityUtils.toString(resEntity, "UTF-8"));
}
} finally {
response.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 发送 get请求
*/
public static void doGet() {
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建参数队列
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", "admin"));
params.add(new BasicNameValuePair("password", "123456"));
try {
//参数转换为字符串
String paramsStr = EntityUtils.toString(new UrlEncodedFormEntity(params, "UTF-8"));
String url = "http://localhost:8888/myTest/testHttpClientGet" + "?" + paramsStr;
// 创建httpget.
HttpGet httpget = new HttpGet(url);
System.out.println("executing request " + httpget.getURI());
// 执行get请求.
CloseableHttpResponse response = httpclient.execute(httpget);
try {
// 获取响应实体
HttpEntity entity = response.getEntity();
// 打印响应状态
System.out.println(response.getStatusLine());
if (entity != null) {
// 打印响应内容长度
System.out.println("Response content length: " + entity.getContentLength());
// 打印响应内容
System.out.println("Response content: " + EntityUtils.toString(entity));
}
} finally {
response.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* post方式提交表单(模拟用户登录请求)
*/
public static void doStringPost() {
// 创建默认的httpClient实例.
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建httppost
String url = "http://localhost:8888/myTest/testHttpClientStringPost";
HttpPost httppost = new HttpPost(url);
// 创建参数字符串
JSONObject jsonObject = new JSONObject();
jsonObject.put("username", "admin");
jsonObject.put("password", "123456");
try {
//设置实体内容的格式。APPLICATION_JSON = "application/json",
// 如果传送"application/xml"格式,选择ContentType.APPLICATION_XML
StringEntity entity = new StringEntity(jsonObject.toString(), ContentType.APPLICATION_JSON);
httppost.setEntity(entity); //发送字符串参数
System.out.println("executing request " + httppost.getURI());
CloseableHttpResponse response = httpclient.execute(httppost);
try {
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
System.out.println("Response content: " + EntityUtils.toString(resEntity, "UTF-8"));
}
} finally {
response.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 上传文件
*/
public static void doUploadPost() {
CloseableHttpClient httpclient = HttpClients.createDefault();
String url = "http://localhost:8888/myTest/testHttpClientUploadPost";
try {
HttpPost httppost = new HttpPost(url);
FileBody fileBody = new FileBody(new File("D:\img8.jpg"));
StringBody stringBody = new StringBody("一张测试图片", ContentType.TEXT_PLAIN.withCharset("UTF-8"));
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.addPart("file", fileBody);//文件参数
builder.addPart("explain", stringBody);//字符串参数
HttpEntity entity = builder.build();
httppost.setEntity(entity);
System.out.println("executing request " + httppost.getRequestLine());
CloseableHttpResponse response = httpclient.execute(httppost);
try {
System.out.println(response.getStatusLine());
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
System.out.println("Response content: " + EntityUtils.toString(resEntity, "UTF-8"));
}
} finally {
response.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
// doFormPost();
// doGet();
// doStringPost();
doUploadPost();
}
}
处理请求的方法
package com.xkeshi.paymentweb.controllers.test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import java.io.File;
/**
* Created by jiangzw on 2017/11/3.
*/
@Controller
@RequestMapping(value = "/myTest")
public class MyTestController {
@ResponseBody
@RequestMapping(value = "/testHttpClientPost", method = RequestMethod.POST)
public String testHttpClientPost(@RequestParam("username") String username,
@RequestParam("password") String password) {
String result = null;
if ("admin".equals(username) && "123456".equals(password)) {
result = "用户名和密码验证成功!";
} else {
result = "用户名和密码验证失败!";
}
return result;
}
@ResponseBody
@RequestMapping(value = "/testHttpClientGet", method = RequestMethod.GET)
public String testHttpClientGet(@RequestParam("username") String username,
@RequestParam("password") String password) {
String result = null;
if ("admin".equals(username) && "123456".equals(password)) {
result = "用户名和密码验证成功!";
} else {
result = "用户名和密码验证失败!";
}
return result;
}
@ResponseBody
@RequestMapping(value = "/testHttpClientStringPost", method = RequestMethod.POST)
public String testHttpClientStringPost(@RequestBody String requestBody) {
JSONObject jsonObject = JSON.parseObject(requestBody);
String username = jsonObject.get("username").toString();
String password = jsonObject.get("password").toString();
String result = null;
if ("admin".equals(username) && "123456".equals(password)) {
result = "用户名和密码验证成功!";
} else {
result = "用户名和密码验证失败!";
}
return result;
}
@ResponseBody
@RequestMapping(value = "/testHttpClientUploadPost", method = RequestMethod.POST)
public String testHttpClientUploadPost(@RequestParam("file") CommonsMultipartFile file,
@RequestParam("explain") String explain) {
System.out.println("explain: " + explain);
String result = "上传失败";
//文件保存路径和名称
String savePath = "D:\home" + File.separator + System.currentTimeMillis() + file.getOriginalFilename();
File newFile= null;
try {
newFile = new File(savePath);
//通过CommonsMultipartFile的方法直接写文件(注意这个时候)
file.transferTo(newFile);
result = "上传成功";
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}