底部参考文档,欢迎点击:https://www.runoob.com/http/http-content-type.html

这两天遇到了点糟心事,因为小伙伴走了。然后事情起因是这样的,来了个任务封装个百度识别的api,我想这有什么难的,直接动手就干于是乎…

首先看接口文档,发现要求格式如下

重点是content-Type跟其他别的对接格式不一样啊,这下我要仔细点。

先用postman尝试调用百度开放的接口,发现不能用我们常用的body
需要用form-urlencoded形式

行吧,那就用这种,就此,问题就埋下了伏笔
我就用了大佬封装的HttpHelper类来调用,写好如下

  Map<String, String> params = new HashMap<>();
params.put("access_token", "24.1903a797c5394e320ca8");
params.put("url", imgUrl);
params.put("id_card_side", "front"); RequestBody requestBody = HttpHelper.buildBody(MediaType.APPLICATION_FORM_URLENCODED, params);
JSONObject response = HttpHelper.post("https://aip.baidubce.com/rest/2.0/ocr/v1/idcard", null, requestBody, JSONObject.class);

发现调用失败,报invalid parameter无效参数,我看了之前大家都这样调外部接口的呀,打个断点发现参数都对的,顿时心生疑问。
再看下调用成功的postman,发现使用这种application/x-www-form-urlencoded格式参数会自动加到url尾部,难道要走这条路?直接把入参拼接在尾部,尝试各种将参数放到form或者body用post传都不行,唉,,还是走这条路吧

 // 组建信息
List<Pair<String, String>> list = new ArrayList<>();
list.add(new Pair<>("access_token", accessToken));
list.add(new Pair<>("url", imgUrl));
list.add(new Pair<>("id_card_side", "back")); String uri = HttpHelper.buildQuery(list);
String requestUrl = OCR_HOST + uri;
// 这边只能为空,如果数据放这里面会报错
Map<String, String> params = new HashMap<>();
RequestBody requestBody = HttpHelper.buildBody(MediaType.APPLICATION_FORM_URLENCODED, params);
JSONObject resultJson = HttpHelper.post(requestUrl, null, requestBody, JSONObject.class);

这种就可以了

总结: 后来自己研究了下,一个请求会有 “Content-Type定义网络文件的类型和网页的编码”,我们一般遇到比较多的是application/json JSON数据格式和multipart/form-data 表单格式,要对所有的格式有所了解才行

百度api经历的更多相关文章

  1. 百度API的经历,怎样为多个点添加带检索功能的信息窗口

    不管我们要做什么样的效果,APIKey(密钥)都是不可缺少的要件,所以我们需要先去百度申请我们的APIKey!!! 伸手党,请直接到页面底部获取完整代码! 最近做一个门店查询的内容展示,考虑到用户直观 ...

  2. 利用百度API Store接口进行火车票查询

    火车票查询 项目源码下载链接: Github:https://github.com/VincentWYJ/TrainTicketQuery 博客文件:http://files.cnblogs.com/ ...

  3. 百度API ; 很多有用的接口及公用 数据

    百度API : http://apistore.baidu.com/ . 比如手机号码:

  4. 去百度API的百度地图准确叠加和坐标转换的解决方案研究

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 目前项目上如果要使用百度地图,得加载百度的开发包,然后通过百 ...

  5. 百度api短信开发

    公司原来有一个短信发送的功能,是调用第三方的,但是很不稳定,时不时就收不到短信,但是钱已经扣了.对于这样的事,谁都忍受不了的.于是想找一个稳定短信发送平台,第一想到的是阿里云,百度.在这两个平台上公司 ...

  6. html5获取经纬度,百度api获取街区名,并使用JS保存进cookie

    引用js<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak= ...

  7. 百度API使用--javascript api进行多点定位

    使用百度地图提供的javascript api,给定多点的经纬度坐标,在百度地图上 显示这些坐标点. 其中包括各个点自适应地图显示,自定义坐标点的图标,以及各个点之间添加折线. 实现的效果如下图: 具 ...

  8. PHP学习笔记:利用百度api实现手机归属地查询

    从来没有用过api,都不知道怎么获得api的数据,跟着demo,然后修改,终于实现了手机号码查询的功能,代码和说明很全,大家试试. <?php /** * Created by jianqing ...

  9. 【百度地图API】百度API卫星图使用方法和卫星图对比工具

    原文:[百度地图API]百度API卫星图使用方法和卫星图对比工具 百度地图API推出卫星图接口也有一个月啦~ 本文除了介绍如何使用百度地图API来操作卫星图外,还顺带制作了个卫星图对比工具. 一.百度 ...

  10. 【转】百度API获取城市名地名(附源码)

    在做一个软件时,用到了定位功能.网上有很多关于google 的GPS定位,但网上关于google定位都没有用, 搜索下原因:(这里建议大家在中国就尽量不使用系统自带的定位) 因为Google的服务器不 ...

随机推荐

  1. 【算法】【C语言进阶】C语言字符串操作宝藏级别汇总 strtok函数 strstr函数该怎么用?【超详细的使用解释和模拟实现】

    [算法][C语言进阶]C语言字符串操作宝藏级别汇总[超详细的使用解释和模拟实现] 作者: @小小Programmer 这是我的主页:@小小Programmer 在食用这篇博客之前,博主在这里介绍一下其 ...

  2. 制作包含最新更新的Windows 10 LTSC 2021 ISO

    介绍 在制作桌面云windows 模板的时候,一般需要安装最新的更新.更新安装过程非常耗时,并且安装更新会导致桌面模板的磁盘空间膨胀.制作出的模板会占用很大的磁盘空间.如果不安装更新,模板大小约5G. ...

  3. 教你用CSS实现表单部件

    案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用CSS编程实战案例,使用 列表标签完成一个下拉菜单样式的表单部件. 案例演示 运行代码后在浏览器弹出由 标签组成的下拉菜单样 ...

  4. shell 两个数组比较,得到元素的并集、交集等

    linux shell 实现数组比较,取元素的并集.交集时,可以使用sort排序.uniq统计和awk数据过滤. shell 实现如下 file_list_1=("test1" & ...

  5. win10远程桌面连接,使用正确的用户名和密码仍然不能成功连接

    最近笔记本重置后,台式使用"远程桌面连接"远程笔记本失败了,总是提示"登录没有成功". 开始自查:win10专业版,允许远程的相关设置也都开了,连接的ip正确, ...

  6. CF1861

    只做出 A,身败名裂 A 显然不管怎么排,13,31 总有一个会出现,看看哪个出现. B 给定两个 01 串,每次可以挑一个串的一个子串,要求两端相同,然后把这个子串全部变得和两端相同. 问经过若干次 ...

  7. Codeforces Global Round 22 A-E

    比赛链接 A 题解 知识点:贪心. 显然交错释放最好. 若两类数量不一样,那么较少的一组的一定都可以双倍,剩下的另一组就放进一个优先队列,从大到小和少的一组匹配可以双倍,剩下的直接加. 如果两类数量一 ...

  8. 【framework】Activity启动流程

    1 前言 ATMS启动流程 介绍了 ActivityTaskManagerService(ATMS)的启动和初始化流程,本文将介绍 Activity 的启动流程.由于 Activity 启动流程复杂, ...

  9. Git实战系列教程

    介绍 本文详细记录了Git一系列核心概念和工作中常用的操作命令,通篇以实际出发拒绝过度理论,值得典藏:). 概念 版本管理系统 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的 ...

  10. Divisors of the Divisors of an Integer题解

    Divisors of the Divisors of an Integer 题意:定义d[x]为x的因子个数,sndd[y]为y的因子的因子个数和. 思路:任意一个大于一的数,都可以分解为若干个质数 ...