微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C ++ Rest SDK将长数据类型传递到请求正文中会导致400错误请求

如何解决C ++ Rest SDK将长数据类型传递到请求正文中会导致400错误请求

我的Swagger文档定义了预期在请求中发送的长数据类型,例如:

    size:
      type: integer
      format: int64
      description: 'Some size'

我使用C ++中的以下代码创建请求:

web::json::value postData = web::json::value::object();

如果我在下面的正文中传递一个硬编码的值(即50左右),我会收到200 OK响应,所以很好

postData[L"size"] = web::json::value::number(50);

但是,如果我将此值作为long或int64_t数据类型变量传递,如下所示,则会收到400错误请求

long size = 50;   //or int64_t,it results with same error
postData[L"size"] = web::json::value::number(size);

解决方法

问题是我使用MockLabs创建模拟调用。 因此,在那里我定义了POST请求正文,如下所示:

{ "size":1 }

因此,如果我的传入POST请求的值不同于1(即50),我将得到400错误的请求;否则,我会得到200 OK。如果保留此POST请求正文,则只能发送size = 1,其他所有邮件都将返回400 Bad Request。

由于我是硬编码1,所以我得到200 OK 但是当我在代码中使用一个变量(不同于1)时,我将得到400错误请求。

解决方案: 只需在您的模拟服务器(我使用MockLabs)中删除POST请求主体定义,然后将其留为空白即可。然后它将接受任何带有正文的POST请求(即{ "size":1 }{ "size":450 }{ "size":8 }或您想要的任何其他整数),并以200 OK响应。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。