zoukankan      html  css  js  c++  java
  • 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;
    }
    }
  • 相关阅读:
    POJ2001Shortest Prefixes[Trie]
    UVA
    POJ2528Mayor's posters[线段树 离散化]
    COGS130. [USACO Mar08] 游荡的奶牛[DP]
    POJ1962Corporative Network[带权并查集]
    BZOJ1798: [Ahoi2009]Seq 维护序列seq[线段树]
    洛谷U4859matrix[单调栈]
    COGS247. 售票系统[线段树 RMQ]
    COGS1008. 贪婪大陆[树状数组 模型转换]
    COGS182 [USACO Jan07] 均衡队形[RMQ]
  • 原文地址:https://www.cnblogs.com/wutongin/p/7778996.html
Copyright © 2011-2022 走看看