• HttpClient发送Post和Get请求


    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;
    }
    }
  • 相关阅读:
    mongodb 简单的更新语句
    centos 安装ffmpeg 及h264编码打包
    mongodb $where查询
    javascript 上传进度条
    javascript 仿豆瓣读书笔记
    js监听浏览器剪贴板
    ffmpeg相关操作
    ffmpeg未整理好,有时间整理下
    fffmpeg 提取pcm
    ffmpeg转MP4 moov头在前命令
  • 原文地址:https://www.cnblogs.com/wutongin/p/7778996.html
Copyright © 2020-2023  润新知