httpclient发送Get请求和Post请求

这篇具有很好参考价值的文章主要介绍了httpclient发送Get请求和Post请求。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Get请求简介

  • 1). 创建HttpClient对象,可以使用HttpClients.createDefault()
  • 2). 如果是无参数的GET请求,则直接使用构造方法HttpGet(String url)创建HttpGet对象即可;
  • 3)如果是带参数GET请求,则可以先使用URIBuilder(String url)创建对象,再调用addParameter(Stringparam, String value)`, 或setParameter(String param, String)
    value)来设置请求参数,并调用build()方法构建一个URI对象。
  • 4). 创建HttpResponse,调用HttpClient对象的execute(HttpUriRequest
    request)发送请求,该方法返回一个HttpResponse。调用HttpResponse的getAllHeaders()、getHeaders(String
    name)等方法可获取服务器的响应头;
  • 5)调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。通过调用getStatusLine().getStatusCode()可以获取响应状态码。
  • 6). 释放连接。

构建一个Maven项目,引入如下依赖

 <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.8</version>
        </dependency>

get无参数

如果是无参数的GET请求,则直接使用构造方法HttpGet(String url)创建HttpGet对象即可

/**
 *普通的GET请求
 */
public class DoGET {
    public static void main(String[] args) throws Exception {
        // 创建Httpclient对象
        CloseableHttpClient httpclient = HttpClients.createDefault();
        // 创建http GET请求
        HttpGet httpGet = new HttpGet("http://www.baidu.com");
        CloseableHttpResponse response = null;
        try {
            // 执行请求
            response = httpclient.execute(httpGet);
            // 判断返回状态是否为200
            if (response.getStatusLine().getStatusCode() == 200) {
                //请求体内容
                String content = EntityUtils.toString(response.getEntity(), "UTF-8");
                //内容写入文件
                FileUtils.writeStringToFile(new File("E:\\devtest\\baidu.html"), content, "UTF-8");
                System.out.println("内容长度:"+content.length());
            }
        } finally {
            if (response != null) {
                response.close();
            }
            //相当于关闭浏览器
            httpclient.close();
        }
    }
}

get有参数

如果是带参数GET请求,则可以先使用URIBuilder(String url)创建对象,再调用addParameter(Stringparam, String value)

public class HttpclientTest {
    @Test
    public void httpGet() throws IOException {
        // 1.创建httpclient
        CloseableHttpClient httpClient = HttpClients.createDefault();
        //2. 创建HttpGet,设置URL访问地址
        String urlTest = "https://XXXX/XXX/shopping/platformInfo?platformid=7";
        HttpGet httpGet = new HttpGet(urlTest);
        // 3. 请求执行,获取响应
        CloseableHttpResponse response = httpClient.execute(httpGet);
        //解析响应
        if (response.getStatusLine().getStatusCode() == 2000) {
            String content = EntityUtils.toString(response.getEntity(), "UTF-8");
            System.out.println(content.length());
        }
        // 4.获取响应实体
        HttpEntity entity = response.getEntity();
        System.out.println(EntityUtils.toString(entity, "utf-8"));
        response.close();
        httpClient.close();
    }

代码中使用的是公司接口,请求URL前缀就XXX表示了,get请求如图所示
运行结果:我们已经看到get接口成功返回一条数据
httpclient post,Java接口自动化,java,服务器,servlet

Post请求简介

  • 1). 创建HttpClient对象,可以使用HttpClients.createDefault();
  • 2). 如果是无参数的POST请求,则直接使用构造方法HttpPost(String url)创建HttpPost对象即可;
  • 3)如果是带参数POST请求,先构建HttpEntity对象并设置请求参数,然后调用setEntity(HttpEntityentity)创建HttpPost对象。
  • 4). 创建HttpResponse,调用HttpClient对象的execute(HttpUriRequest
    request)发送请求,该方法返回一个HttpResponse。调用HttpResponse的getAllHeaders()、getHeaders(String
    name)等方法可获取服务器的响应头;
  • 5)调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。通过调用getStatusLine().getStatusCode()可以获取响应状态码。
  • 6). 释放连接。

post携带JSON参数

如果是带JSON参数POST请求,先构建HttpEntity对象并设置请求参数,因为我们的参数是JSON格式的,需要将请求对象转换成string类型的,然后调用setEntity(HttpEntityentity)创建HttpPost对象
首先我们先创建一个请求实体类PostData,代码如图所示

/**
 * @param
 * @author wcy
 * @create 2022/10/15
 * @return
 * @description
 **/
public class PostData {
    private String categoryid;
    private int currentPage;
    private String end_time;
    private int pageSize;
    private int platformid;
    private String start_time;
    private int step_id;

    public String getCategoryid() {
        return categoryid;
    }

    public void setCategoryid(String categoryid) {
        this.categoryid = categoryid;
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public String getEnd_time() {
        return end_time;
    }

    public void setEnd_time(String end_time) {
        this.end_time = end_time;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getPlatformid() {
        return platformid;
    }

    public void setPlatformid(int platformid) {
        this.platformid = platformid;
    }

    public String getStart_time() {
        return start_time;
    }

    public void setStart_time(String start_time) {
        this.start_time = start_time;
    }

    public int getStep_id() {
        return step_id;
    }

    public void setStep_id(int step_id) {
        this.step_id = step_id;
    }
}
  @Test
    public void httpPost() throws IOException {
        // 1.创建httpclient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
//         2.创建post对象,设置URL访问地址
        String url = "https://XxX/XxX/shopping/goodsRank";
        HttpPost httpPost = new HttpPost(url);
        CloseableHttpResponse response = null;
        try {
            PostData data = new PostData();
            data.setCategoryid("");
            data.setCurrentPage(1);
            data.setEnd_time("2022-11-02");
            data.setPageSize(20);
            data.setPlatformid(1);
            data.setStart_time("2022-11-02");
            data.setStep_id(464);
            String bodyEntity = JSON.toJSONString(data);
            HttpEntity entity = new StringEntity(bodyEntity, ContentType.APPLICATION_JSON);
            httpPost.setEntity(entity);
            //发送post请求
            response = httpClient.execute(httpPost);
            //解析响应
            if (response.getStatusLine().getStatusCode() == 200) {
                //获取响应数据
                entity = response.getEntity();
                System.out.println(EntityUtils.toString(entity, "utf-8"));
            }
        }catch (IOException e){
           e.printStackTrace();
        }
   }

运行结果:
httpclient post,Java接口自动化,java,服务器,servlet

post携带表单参数

post请求传递参数的形式是将参数放入表单请求体中,然后将表单对象放入请求体中传递。

//1.获得一个httpclient对象
CloseableHttpClient httpclient = HttpClients.createDefault();
//2.生成一个post请求
HttpPost httpPost = new HttpPost("http://www.baidu.com/");
//3.请求参数添加到请求体中,表单提交
List<NameValuePair> nvpList = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair(key, val));
UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nvps, charset);
httpPost.setEntity(formEntity);
//4.执行get请求并返回结果
CloseableHttpResponse response = httpclient.execute(httpPost);
try {
    //5.处理结果响应体
    HttpEntity entity = response.getEntity();
} finally {
    response.close();
}

postman自动生成OKhttp代码

首先在postman编写好post请求的URL,请求参数,请求方式,请求头
httpclient post,Java接口自动化,java,服务器,servlet
点击sends按钮右侧的code弹窗展示,如图所示
httpclient post,Java接口自动化,java,服务器,servlet
框里面的代码就是自动生成的,我们可以复制代码到idea中,需要在maven`装下OKhhtp的依赖
官网连接:https://mvnrepository.com/

     OkHttpClient client = new OkHttpClient().newBuilder()
                .build();
        MediaType mediaType = MediaType.parse("text/plain");
        RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
                .addFormDataPart("categoryid","")
                .addFormDataPart("currentPage","1")
                .addFormDataPart("end_time ","2022-11-01")
                .addFormDataPart("pageSize","20")
                .addFormDataPart("platformid ","1")
                .addFormDataPart("start_time ","2022-11-01")
                .addFormDataPart("step_id ","464")
                .build();
        Request request = new Request.Builder()
                .url("https://XXX/XXX/shopping/goodsRank")
                .method("POST", body)
                .addHeader("Cookie", "laravel_session=eyJpdiI6IkRxcWx6M201UHRWMWFWeDY3b0RURmc9PSIsInZhbHVlIjoid0pSM241cmgvRUk5WndHTnc2azlzNFpHVDh6MCt5R1pSV21pQXRPRDB1eEpyMThNZVUrelRKYzJHSVUzNHp3T290RHppOVNvSFZ3Z2VCQ2g4SEFQUjBXSGpRL3VkcUJiRUFzRGc5b21BRnhOUUwzUkNENlhzUEJlVGtWZkhZNGoiLCJtYWMiOiIyYzM1NDhkYzQ0YmZiNjQ5OWIwZjg1NDA3NTYxZTcyM2IyODAxNWI1ZGU4NmEzOTE2YjRmOTBjYzQzMzUyNjY1In0%3D")
                .build();
        Response response = client.newCall(request).execute();
        System.out.println(response);
    }

OKhttp的语法跟httpclient差不多,都是http工具类文章来源地址https://www.toymoban.com/news/detail-742454.html

到了这里,关于httpclient发送Get请求和Post请求的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java http get post 和 发送json数据请求

    浏览器请求效果       main调用  

    2024年02月16日
    浏览(50)
  • C#中通过HttpClient发送Post请求

    C#中HttpClient进行各种类型的传输 我们可以看到, 尽管PostAsync有四个重载函数, 但是接受的都是HttpContent, 而查看源码可以看到, HttpContent是一个抽象类 那我们就不可能直接创建HttpContent的实例, 而需要去找他的实现类, 经过一番研究, 发现了, 如下四个: MultipartFormDataContent、FormUrl

    2024年02月02日
    浏览(46)
  • 【Golang 接口自动化02】使用标准库net/http发送Post请求

    目录 写在前面 发送Post请求 示例代码 源码分析 Post请求参数解析 响应数据解析 验证 发送Json/XMl Json请求示例代码 xml请求示例代码 总结 资料获取方法 上一篇我们介绍了使用  net/http  发送get请求,因为考虑到篇幅问题,把Post单独拎了出来,我们在这一篇一起从源码来了解一

    2024年02月14日
    浏览(59)
  • java调用http接口(get请求和post请求)

    1.http接口的格式如下: 图片选择失败,我只能把数据贴出来,如果有不懂的可以问我哈。 http://localhost:8881/department/getDepartmentList接口数据如下:(请求方式是GET) http://localhost:8881/department/getDataById?id=3接口数据如下:(请求方式是POST) 2.需要引入的包有: 3.实现方法如下:

    2024年02月13日
    浏览(53)
  • java业务代码发送http请求(Post方式:请求参数为JSON格式;Get方式)

    实际开发中,可能需要发送http请求到第三方服务获取数据,于是就有以下应用: 依赖: 假设我需要在我的业务代码中调用该地址: url:http://xx.xx:xxxx/user/count 请求方法:post 内容类型:application/json 请求参数:id, username 返回参数:code 响应结果 int类型                  

    2024年02月12日
    浏览(56)
  • Java 中使用 OkHttpClent 请求接口 get方式 post方式

    学习记录,不喜勿喷 一般在Java平台上,我们会使用Apache HttpClient作为Http客户端,用于发送 HTTP 请求,并对响应进行处理。比如可以使用http客户端与第三方服务(如SSO服务)进行集成,当然还可以爬取网上的数据等。OKHttp与HttpClient类似,也是一个Http客户端,提供了对 HTTP/2 和

    2024年02月12日
    浏览(56)
  • JAVA调用第三方接口的GET/POST/PUT请求方式

    GET请求 POST请求 POST请求(JSON传参) PUT请求(传TOKEN)

    2024年02月03日
    浏览(61)
  • HTTP POST接口带参数的HttpClient请求方法和调用

    接口自动化测试,今天遇到POST接口带参数,参数在url上,发现原来的工具类中没有该方法,重新调试加上。  doPost方法如下: 参考: [Java 接口自动化框架]httpclient4.5.3(CloseableHttpClient) https的工具类HttpsClientUtils

    2024年02月06日
    浏览(46)
  • 使用Postman发送GET请求和POST请求

    Postman是一款流行的API测试和开发工具,它提供了一个易于使用的界面,用于发送HTTP请求并与REST、SOAP和其他Web服务进行交互。以下是对Postman的简单介绍: 发送HTTP请求:Postman允许您以简单直观的方式发送各种类型的HTTP请求(GET、POST、PUT、DELETE等)到指定的URL。您可以设置请

    2024年02月05日
    浏览(60)
  • chrome 模拟发送POST请求和GET请求

    F12打开Console输入以下代码:

    2024年02月11日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包