如何在 Ballerina 的 POST 请求中发送表单数据?
How to send form data in a POST request in Ballerina?
我想通过 POST 请求发送表单数据。我已尝试设置 headers 并设置有效负载。
req.setPayload("text=you are amazing");
req.addHeader("content-type","application/x-www-form-urlencoded");
结果为,
{message:"Entity body is not json compatible since the received content-type is : text/plain", cause:null}
使用setStringPayload方法时,
req.setStringPayload("text=you are amazing");
req.addHeader("content-type","application/x-www-form-urlencoded");
出现如下错误
error: senuri/sms-sender:1.0.0/sms_sender.bal:72:5: undefined function 'setStringPayload' in struct 'ballerina/http:Request'
我在 Ubuntu 16.04 和 Ballerina 0.975.0
有什么建议吗?
出现以下错误的原因是未正确覆盖内容类型。
{message:"Entity body is not json compatible since the received
content-type is : text/plain", cause:null}
setPayload方法通过方法参数推断payload的类型,并设置各自的默认参数。本例中payload是string类型,所以content-type设置为text/plain。
addHeader 方法不会替换现有的 header 值,因为它只是为特定的现有 header 名称添加另一个条目。
由于优先考虑第一个实体 content-type 仍然是 text/plain。解决方案是使用 setHeader 替换现有的 header 值。
req.setPayload("text=you are amazing");
req.setHeader("Content-type","application/x-www-form-urlencoded");
关于第二个查询,setStringPaylaod 重命名为setTextPaylaod。所以使用下面的代码,可以发送表单数据。覆盖 content-type 很重要,因为通过 setTextPaylaod 设置负载的默认内容类型是 text/plain.
req.setTextPayload("text=you are amazing");
req.setHeader("Content-type","application/x-www-form-urlencoded");
getFormParams 方法可用于将参数作为映射检索。
我想通过 POST 请求发送表单数据。我已尝试设置 headers 并设置有效负载。
req.setPayload("text=you are amazing");
req.addHeader("content-type","application/x-www-form-urlencoded");
结果为,
{message:"Entity body is not json compatible since the received content-type is : text/plain", cause:null}
使用setStringPayload方法时,
req.setStringPayload("text=you are amazing");
req.addHeader("content-type","application/x-www-form-urlencoded");
出现如下错误
error: senuri/sms-sender:1.0.0/sms_sender.bal:72:5: undefined function 'setStringPayload' in struct 'ballerina/http:Request'
我在 Ubuntu 16.04 和 Ballerina 0.975.0
有什么建议吗?
出现以下错误的原因是未正确覆盖内容类型。
{message:"Entity body is not json compatible since the received content-type is : text/plain", cause:null}
setPayload方法通过方法参数推断payload的类型,并设置各自的默认参数。本例中payload是string类型,所以content-type设置为text/plain。 addHeader 方法不会替换现有的 header 值,因为它只是为特定的现有 header 名称添加另一个条目。
由于优先考虑第一个实体 content-type 仍然是 text/plain。解决方案是使用 setHeader 替换现有的 header 值。
req.setPayload("text=you are amazing");
req.setHeader("Content-type","application/x-www-form-urlencoded");
关于第二个查询,setStringPaylaod 重命名为setTextPaylaod。所以使用下面的代码,可以发送表单数据。覆盖 content-type 很重要,因为通过 setTextPaylaod 设置负载的默认内容类型是 text/plain.
req.setTextPayload("text=you are amazing");
req.setHeader("Content-type","application/x-www-form-urlencoded");
getFormParams 方法可用于将参数作为映射检索。