百度api经历
底部参考文档,欢迎点击: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经历的更多相关文章
- 百度API的经历,怎样为多个点添加带检索功能的信息窗口
不管我们要做什么样的效果,APIKey(密钥)都是不可缺少的要件,所以我们需要先去百度申请我们的APIKey!!! 伸手党,请直接到页面底部获取完整代码! 最近做一个门店查询的内容展示,考虑到用户直观 ...
- 利用百度API Store接口进行火车票查询
火车票查询 项目源码下载链接: Github:https://github.com/VincentWYJ/TrainTicketQuery 博客文件:http://files.cnblogs.com/ ...
- 百度API ; 很多有用的接口及公用 数据
百度API : http://apistore.baidu.com/ . 比如手机号码:
- 去百度API的百度地图准确叠加和坐标转换的解决方案研究
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 目前项目上如果要使用百度地图,得加载百度的开发包,然后通过百 ...
- 百度api短信开发
公司原来有一个短信发送的功能,是调用第三方的,但是很不稳定,时不时就收不到短信,但是钱已经扣了.对于这样的事,谁都忍受不了的.于是想找一个稳定短信发送平台,第一想到的是阿里云,百度.在这两个平台上公司 ...
- html5获取经纬度,百度api获取街区名,并使用JS保存进cookie
引用js<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak= ...
- 百度API使用--javascript api进行多点定位
使用百度地图提供的javascript api,给定多点的经纬度坐标,在百度地图上 显示这些坐标点. 其中包括各个点自适应地图显示,自定义坐标点的图标,以及各个点之间添加折线. 实现的效果如下图: 具 ...
- PHP学习笔记:利用百度api实现手机归属地查询
从来没有用过api,都不知道怎么获得api的数据,跟着demo,然后修改,终于实现了手机号码查询的功能,代码和说明很全,大家试试. <?php /** * Created by jianqing ...
- 【百度地图API】百度API卫星图使用方法和卫星图对比工具
原文:[百度地图API]百度API卫星图使用方法和卫星图对比工具 百度地图API推出卫星图接口也有一个月啦~ 本文除了介绍如何使用百度地图API来操作卫星图外,还顺带制作了个卫星图对比工具. 一.百度 ...
- 【转】百度API获取城市名地名(附源码)
在做一个软件时,用到了定位功能.网上有很多关于google 的GPS定位,但网上关于google定位都没有用, 搜索下原因:(这里建议大家在中国就尽量不使用系统自带的定位) 因为Google的服务器不 ...
随机推荐
- Jackson objectMapper.readValue 方法 详解
直接说结论方便一目了然: 1. 简单的直接Bean.class 2. 复杂的用 TypeReference 这样就完事了. public class TestMain2 { public static ...
- .NET Core开发实战(第32课:集成事件:解决跨微服务的最终一致性)--学习笔记
32 | 集成事件:解决跨微服务的最终一致性 首先看一下集成事件的工作原理 它的目的时为了实现系统的集成,它主要是用于系统里面多个微服务之间相互传递事件 集成事件的实现方式有两种,一种是图上显示的发布 ...
- NC17193 简单瞎搞题
题目链接 题目 题目描述 一共有 n个数,第 i 个数是 xi xi 可以取 [li , ri] 中任意的一个值. 设 \(S = \sum{{x_i}^2}\) ,求 S 种类数. 输入描述 第一行 ...
- STC12C5A56S2和DS12C887做的电子闹铃
配件信息 控制器: STC12C5A56S2 定时芯片: DS12C887 显示: 4位0.56寸数码管 其它: 无源蜂鸣器, 三极管S9012, 电阻10K*2, 100*1, 电容30p*2, 1 ...
- 【Unity3D】粒子系统ParticleSystem
1 简介 拖尾(TrailRenderer).线段渲染器(LineRenderer).粒子系统(ParticleSystem)是 Unity3D 提供的三大特效,其中粒子系统的功能最为强大,特效也 ...
- 【Unity3D】分离路面导航
1 前言 导航系统中介绍了导航的基本用法,但是不能解决分离路面导航问题.如下图,胶囊体需要导航到立方体位置,但是路面不连续,烘焙(Bake)导航网格后,断开处也没有导航网格,因此,胶囊体导航到分离 ...
- Git实战系列教程
介绍 本文详细记录了Git一系列核心概念和工作中常用的操作命令,通篇以实际出发拒绝过度理论,值得典藏:). 概念 版本管理系统 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的 ...
- 《深入理解Java虚拟机》(六) 调优策略 -- 笔记
目录 一.操作文档类功能,大量大对象直接进入老年代 问题现象 解决方法 通过单一Java虚拟机管理大量的内存 同一台服务器上部署若干Java虚拟机 二.异步请求大量累积 三.排查问题 排查问题: 可能 ...
- 微信小程序生态13-微信公众号自定义菜单配置
序 微信公众号分为订阅号和服务号两种,虽然二者很大的不同,但是这两种公众号的底部却是差不多的:都有菜单栏,而且这些底部菜单也都是自定义配置的. 如CSDN的官方公众号的底部就有精彩栏目.新程序员.CS ...
- pgrep查询当前运行程序的pid
pgrep 运行的程序 [root@c1 ~]# pgrep matmul 2634730