Java codenameone REST API POST请求正文

Java codenameone REST API POST请求正文,java,rest,http,mobile,codenameone,Java,Rest,Http,Mobile,Codenameone,我试图从AWS API网关上的REST API调用POST方法。该API使用curl(for POST)从命令行正确调用,浏览器使用GET正确调用,因此我知道它工作正常,但我似乎找不到使用ConnectionRequest类在codename one上调用POST方法的正确方法,正在阅读文档theres addArgument()还有setRequestBody(),他们说,它们是独占的,所以我尝试了这两种方法,但我的结果是: setRequestBody():似乎它没有向请求发送任何内容,尝

我试图从AWS API网关上的REST API调用POST方法。该API使用curl(for POST)从命令行正确调用,浏览器使用GET正确调用,因此我知道它工作正常,但我似乎找不到使用ConnectionRequest类在codename one上调用POST方法的正确方法,正在阅读文档theres addArgument()还有setRequestBody(),他们说,它们是独占的,所以我尝试了这两种方法,但我的结果是:

  • setRequestBody():似乎它没有向请求发送任何内容,尝试发送与我在curl上发送的相同的JSON requestBody,API响应,但requestBody“未定义”(在AWS API网关日志中检查),也尝试了request.addRequestHeader(“测试”、“测试”);同样,标题在AWS日志中是“未定义”的,但在命令行上调用API时会显示
  • addArgument():API重新返回“400错误请求”
Im使用request.setPost(true); 但是也有setHttpMethod(字符串值);所以我不确定我是否做对了


调用POST REST并向其发送参数的正确方法是什么?有没有办法调试发送的请求?比如打印等效的卷曲调用之类的?或者有没有办法直接在CN1上执行CURL请求

这与多部分上传不完全相同,但我有一个正在工作的AWS,如果您更新问题(和下面的评论),我可以在Codename One中包含执行确切curl请求的代码

至于问题调用
setPost(true)
就足够了,因为它会隐式地设置post方法。如果要执行类似于
PUT
的操作,http方法非常有用


选择请求正文与参数取决于您的请求类型。

在Shai Almong帮助和一些测试之后回答我的问题,正确的方法是(我缺少setContentType调用):


谢谢Shai,已经更新了关于“picking request vs argument”的问题,因为这是一篇帖子,我认为正确的方法是使用请求体,但是当尝试它并检查AWS端的日志时,它被接收为“undefined”,如果我在curl上执行相同的请求,使用相同的请求体,它将被成功接收,所以谷歌搜索这个案例在Stack Overflow上发现了另一个问题,你在文章中提到,你也可以使用addArgument(),尝试了它,但返回了“错误的请求”,所以它们都不适合我,我是否遗漏了什么?我找到了我遗漏的内容,它是对:setContentType()的调用,现在它通过setRequestBody工作
setPost(true);
setContentType('application/json');
setRequestBody("parameters in json format");