Java调用参数类型是application/x-www-form-urlencoded的API问题

 更新时间:2024年09月29日 08:52:58   作者:谢月  
在使用Postman进行接口测试时,对于POST请求,需将请求头设置为application/x-www-form-urlencoded,并将参数转为String类型,通常在GET请求中,参数直接拼接在URL后,本文通过具体实例,详细讲解了参数处理的方法,适合API开发者参考

一、分析

首先用postman测试对应的接口

测试如下:

其中请求头中content-type为application/x-www-form-urlencoded

参数是:

queryParam:{"id":"mobile","userName":"name","mobile":"12345678"}

注意:

我们进行API调用时,参数需要转为String类型,平时我们调用get请求application/x-www-form-urlencoded参数都是直接拼接在url后面, url?字段名=值&字段名=值,所以这里用同样的方式进行参数处理。

二、代码样例

public String getNameCode(String name,String phone) throws Exception {
        // 1.组装数据,以及请求头
        Map header = new HashMap();
        String newParam = "queryParam={\"id\":\"mobile\",\"userName\":\""+name+"\",\"mobile\":\""+phone+"\"}";
        header.put("content-type","application/x-www-form-urlencoded");
        // 3.调用接口查询
        String testRst = HttpUtil.doPost("http://localhost/sv/query",newParam,header);
        if(testRst==null){
            throw new Exception("bomc接口响应失败,请稍后重试");
        }
        // 4.解析结果集
        JSONObject json = JSONObject.parseObject(testRst);
        JSONArray item = json.getJSONArray("items");
        JSONObject obj = item.getJSONObject(0);
        String account = (String) obj.get("userAccount");
        return account;
}
 
public static String doPost(String url, String params, Map header) throws Exception {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);// 创建httpPost
        logger.info("POST请求url:" + url);
        for (Iterator iter = header.keySet().iterator(); iter.hasNext(); ) {
            String key = String.valueOf(iter.next());
            String value = String.valueOf(header.get(key));
            httpPost.setHeader(key, value);
        }
        RequestConfig requestConfig = RequestConfig.custom().setConnectionRequestTimeout(20000)
                .setSocketTimeout(20000).setConnectTimeout(20000).build();
        httpPost.setConfig(requestConfig);
        //设置参数
        logger.info("POST请求参数:" + params);
 
        StringEntity entity = new StringEntity(params, "utf-8");
        entity.setContentEncoding("UTF-8");
        entity.setContentType("application/json");
        httpPost.setEntity(entity);
        CloseableHttpResponse response = null;
        try {
            response = httpclient.execute(httpPost);
            StatusLine status = response.getStatusLine();
            int state = status.getStatusCode();
            if (state == HttpStatus.SC_OK) {
                HttpEntity responseEntity = response.getEntity();
                String jsonString = EntityUtils.toString(responseEntity,"UTF-8");
                return jsonString;
            } else {
                logger.error("请求返回:" + state + "(" + url + ")");
            }
        } finally {
            if (response != null) {
                try {
                    response.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 全面解读Java NIO(看这篇就够了)

    全面解读Java NIO(看这篇就够了)

    Java NIO是Java1.4之后推出来的一套IO接口,NIO提供了一种完全不同的操作方式, NIO支持面向缓冲区的、基于通道的IO操作,这篇文章主要介绍了Java NIO详解(看这篇就够了),需要的朋友可以参考下
    2023-05-05
  • 基于java高并发处理方案

    基于java高并发处理方案

    这篇文章主要介绍了基于java高并发处理方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • logback OutputStreamAppender高效日志输出源码解析

    logback OutputStreamAppender高效日志输出源码解析

    这篇文章主要介绍了为大家logback OutputStreamAppender日志输出效率提升示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Hutool开发MapUtil工具类使用示例

    Hutool开发MapUtil工具类使用示例

    这篇文章主要为大家介绍了Hutool开发MapUtil工具类使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • java -jar指定spring配置文件完整示例

    java -jar指定spring配置文件完整示例

    这篇文章主要介绍了java -jar指定spring配置文件的相关资料,通过示例讲解了激活dev profile、设置外部配置路径、直接指定配置文件名,需要的朋友可以参考下
    2025-06-06
  • 把spring boot项目发布tomcat容器(包含发布到tomcat6的方法)

    把spring boot项目发布tomcat容器(包含发布到tomcat6的方法)

    这篇文章主要介绍了把spring boot项目发布tomcat容器(包含发布到tomcat6的方法),然后在文章给大家提到了如何将Spring Boot项目打包部署到外部Tomcat,需要的朋友参考下吧
    2017-11-11
  • Spring MVC内置过滤器功能示例详解

    Spring MVC内置过滤器功能示例详解

    这篇文章主要为大家介绍了Spring MVC内置过滤器使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • feign name指定服务调用无效问题及解决

    feign name指定服务调用无效问题及解决

    文章主要介绍了FeignClient注解的常用属性,并通过一个具体的例子说明了为什么某个Feign调用需要使用url指定路径才能访问,最后,文章给出了解决办法,即使用path属性指定前缀
    2024-11-11
  • java实现客户端向服务器发送文件

    java实现客户端向服务器发送文件

    这篇文章主要为大家详细介绍了java实现客户端向服务器发送文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Java中的Spring 如何处理循环依赖

    Java中的Spring 如何处理循环依赖

    这篇文章主要介绍了Java中的Spring 如何处理循环依赖,依赖指的是Bean与Bean之间的依赖关系,循环依赖指的是两个或者多个Bean相互依赖,关于更多Spring 处理循环依赖的详情,需要的朋友可以参考下面文章具体内容
    2022-05-05

最新评论