收藏
回答

如何解决调用订阅消息接口传递数据格式错误 47001?

想在后端实现发送订阅消息的接口。

传递数据的时候试着传过转换之后的json字符串,也传过jsonObject,但是两个都是47001。

        String jsonstr = JSON.toJSONString(subscribeMesssageData);
//        JSONObject jsonObj = (JSONObject) JSON.toJSON(subscribeMesssageData);

        MultiValueMap uriVaiables = new LinkedMultiValueMap();
        uriVaiables.add("access_token", ACCESS_TOKEN);
        uriVaiables.add("template_id", TEMPLATE_ID);
        uriVaiables.add("page", "personal");
        uriVaiables.add("touser", JWTUtils.getStringData(request, "openId"));
        uriVaiables.add("data", jsonstr);
        uriVaiables.add("miniprogram_state", "developer");
        uriVaiables.add("lang", "zh_CN");


看官方文档要求该data类型为String但是说明又好像指的是Object类型...


补:按照格式用平台的测试工具进行接口测试也报错:

最后一次编辑于  2023-03-29
回答关注问题邀请回答
收藏

3 个回答

  • Mr.Zhao
    Mr.Zhao
    2023-03-29

    json里不传token

    2023-03-29
    有用 1
    回复 5
    • 菜菜浣熊
      菜菜浣熊
      2023-03-29
      json里没传token,那个是取出token里的openid(我把openid放token里了
      2023-03-29
      回复
    • Mr.Zhao
      Mr.Zhao
      2023-03-29回复菜菜浣熊
      还报错?
      2023-03-29
      回复
    • 菜菜浣熊
      菜菜浣熊
      2023-03-29回复Mr.Zhao
      data的格式出错,搞不明白那个格式
      2023-03-29
      回复
    • Mr.Zhao
      Mr.Zhao
      2023-03-29回复菜菜浣熊
      不懂可以问啊,踩我干啥?data: { ting1: { value: ""}}
      2023-03-29
      回复
    • 菜菜浣熊
      菜菜浣熊
      2023-03-29回复Mr.Zhao
      抱歉,没搞懂社区的设置,我反复点了有用,应该没踩把,,,,(跪  感谢回答
      2023-03-29
      回复
  • 大山
    大山
    2023-03-29


    data 字段内容json格式如下:
    {"thing1":{"value":""},"thing3":{"value":""},"date5":{"value":""}}
    


    2023-03-29
    有用 1
    回复 1
    • 菜菜浣熊
      菜菜浣熊
      2023-03-29
      感谢!后知后觉,打印了一下data,发现确实格式不对(如图)。这个格式没太看懂,外面一层是转化成json字符串后所包裹的内容,里面每个字段的值也都是json嘛?里面那个键值对是用HashMap存储?
      2023-03-29
      回复
  • 菜菜浣熊
    菜菜浣熊
    2023-03-29

    补充:之前是直接用的自定义的类,存储想转换的data值内的属性字段和值(跪

    SubscribeMesssageData subscribeMesssageData = new SubscribeMesssageData();
    
    Task task = taskSevice.selectTask(3);
    
    subscribeMesssageData.setCharacter_string5(task.getTaskId().toString());
    subscribeMesssageData.setThing10(task.getContent());
    subscribeMesssageData.setThing2("订单分类(MMM");
    subscribeMesssageData.setThing4("订单状态(KKK");
    subscribeMesssageData.setDate11("2023年03月29日");
    
    String jsonstr = JSON.toJSONString(subscribeMesssageData);
    
    2023-03-29
    有用
    回复
登录 后发表内容