codenameone REST API POST请求正文

时间:2017-04-15 06:35:04

标签: java rest http mobile codenameone

我试图从AWS API Gateway上的REST API调用POST方法。使用curl(对于POST)和使用GET的浏览器从命令行正确调用API,所以我知道它工作正常,但我似乎无法找到使用ConnectionRequest类调用POST方法的正确方法,阅读文档theres addArgument()和setRequestBody(),他们说,它们是独占的,所以我尝试了两种方法,但我的结果是:

  • setRequestBody():似乎它没有向请求发送任何内容,尝试发送我在curl上发送的相同JSON requestBody,API响应但是requestBody是“未定义”(在AWS API网关日志上检查),也尝试过request.addRequestHeader(“test”,“test”);同样,标头在AWS日志中是“未定义的”,但在命令行上调用API时会显示。
  • addArgument():API重新生成“400错误请求”。

我正在使用request.setPost(true); 但是theres也设置了HttpMethod(String value);所以我不确定我做得对。

调用POST REST并发送参数的正确方法是什么?有没有办法调试发送的请求?比如打印等效的CURL调用或类似的东西?或者是否可以直接在CN1上执行CURL请求?

2 个答案:

答案 0 :(得分:1)

这与它的多部分上传完全相同但我使用AWS upload code here,如果您更新问题(以及下面的评论)我可以包含代码来完成Codename One中的卷曲请求。

关于调用setPost(true)的问题就足够了,因为它会隐式设置post方法。如果您想要执行PUT

之类的操作,http方法非常有用

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

答案 1 :(得分:0)

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

setPost(true);
setContentType('application/json');
setRequestBody("parameters in json format");