我的编程空间,编程开发者的网络收藏夹
学习永远不晚

httpclient发送Get请求和Post请求

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

httpclient发送Get请求和Post请求

创建HttpClient发送请求、接收响应

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对象即可

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接口成功返回一条数据
在这里插入图片描述

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,代码如图所示

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();        }   }

运行结果:
在这里插入图片描述

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,请求参数,请求方式,请求头
在这里插入图片描述
点击sends按钮右侧的code弹窗展示,如图所示
在这里插入图片描述
框里面的代码就是自动生成的,我们可以复制代码到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://blog.csdn.net/weixin_42274846/article/details/127669296

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

httpclient发送Get请求和Post请求

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

HttpClient怎么发送Get请求

HttpClient可以以多种方式发送GET请求,以下是其中的一种示例代码:```javaimport org.apache.http.HttpEntity;import org.apache.http.HttpResponse;impor
2023-08-24

Android下通过httpClient发送GET和POST请求的实例代码

代码如下: public class HttpUtil { public static String sendDataByHttpClientGet(String path,String name,String pass)
2022-06-06

SpringMVC中怎么发送GET、POST请求

SpringMVC中怎么发送GET、POST请求,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我们知道发起 GET 请求和 POST 请求,只需要在表单的 form 标签中,设
2023-06-02

Android发送GET与POST请求的DEMO详解

4.0后网络访问必须单独起一个子线程访问,否则无法运行,这里有一个发送请求的工具类GetPostUtil 代码如下:public class GetPostUtil{ /** * 向指定URL发送GET方法的请求 * * @para
2022-06-06

get请求和 post请求的区别是什么

GET请求和POST请求是HTTP协议中常用的两种请求方法,它们的区别如下:1. 参数传递方式:- GET请求:参数通过URL的查询字符串(query string)传递,参数会附加在URL的末尾,并用"?"分隔URL和参数,多个参数之间用
2023-09-22

Node.js如何发起get和post请求

这篇文章主要介绍了Node.js如何发起get和post请求的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Node.js如何发起get和post请求文章都会有所收获,下面我们一起来看看吧。1、get由于get请
2023-07-04

get和post请求的区别

GET请求和POST请求是HTTP协议中常用的两种请求方式,它们在以下几个方面有所区别:1. 参数传递方式:- GET请求将参数包含在URL的查询字符串中,例如:http://example.com/path?param1=value1&p
2023-09-21

java怎么发送post请求

在Java中发送POST请求,可以使用java.net包中的HttpURLConnection类。以下是一个简单的示例代码:```javaimport java.io.BufferedReader;import java.io.DataOu
2023-08-20

编程热搜

目录