最近在项目组用Java写了一条获取微信小程序码的api,根据微信的接口文档进行一步一步的操作,可就是按照微信的接口文档一步一步来,微信给我返回的结果一直都是47001.
{
"errcode":47001,
"errmsg":"data format error"
}
网上查阅了很多文档,无非圈出的错误就是以下几点:
- 请求参数必须是json格式
- access_token要拼接到url后面,不要放在请求参数体内
- 微信接口要求的请求参数名称拼写错误
- 没按接口要求去传递请求参数
对于这些错误,不能叫坑,因为接口文档已经明确给你讲解了,出这些错误代表你压根就没仔细看文档。
我犯的错误也是老低级了,我在后台将请求参数封装成了一个javaBean:
public class QRCodeRequest {
private String scene;
private String page;
private int width;
private boolean auto_color;
private Object line_color;
private boolean is_hyaline;
}
然后用PostMan是用这样的请求参数去call的:
{
"scene":"wqewqewq",
"line_color":{"r":"100","g":"000","b":"000"}
}
结果就是一直报47001的错误,我反复看了很多次代码,没有找到问题。结果,就是代码问题。
虽然前台只传递了两个参数进来,但是后台用javaBean接收时,将所有属性全部作为请求参数了,前台没传的参数后台全部取默认值了。我不知道为什么微信的后台没有去处理这些无用参数,因为某些值它都是有默认值的:
所以 就是:要什么参数就提供什么参数,(scene参数必须传),或者后台做个判断!
就这么问题,浪费了半天的感情,唉!
越努力,越幸运