Watson对话框cURL会话发布请求未传递表单数据

时间:2016-02-28 17:41:42

标签: c# curl ibm-watson watson-dialog

在发布如下cURL请求时尝试继续创建的会话watson而不是返回新的会话。

curl -u "USERNAME":"PASSWORD" -X POST  --form conversation_id=CONVOID  --form client_id=CLIENTID  --form input="What type of toppings do you have?"  "https://gateway.watsonplatform.net/dialog/api/v1/dialogs/DIALOGID/conversation"

如果我使用下面的cURL,它可以正常工作。

curl -u "USERNAME":"PASSWORD" --data "conversation_id=CONVOID&client_id=CLIENTID&input=What type of toppings do you have?" https://gateway.watsonplatform.net/dialog/api/v1/dialogs/DIALOGID/conversation

我的问题是,现在当我尝试编写一个c#包装器时,我遇到的问题是POST请求无法正确传输其表单数据。

发生了什么事?

我要么需要一个等同于“--data”格式的c#MVC。 (目前使用HttpClient.PostAsync)或找出使用帖子请求继续对话的确切错误。

据我所知,我正在正确复制c#中的帖子请求,所以我不认为有两个问题。 (只有一个发布请求问题,而不是cURL问题,然后是C#实现问题。)

为什么值得我将命令保留为我提交的格式,只用BLOCKCAPITALS替换敏感值。如果它看起来我错过了引号或大括号,那是因为我有并且可能是问题的原因。

1 个答案:

答案 0 :(得分:1)

该服务需要application/x-www-form-urlencoded POST请求

要在curl中执行此操作,您需要使用-d参数:

curl -u "USERNAME":"PASSWORD" -X POST 
  -d conversation_id=CONVOID 
  -d client_id=CLIENTID
  -d input="What type of toppings do you have?"
  "https://gateway.watsonplatform.net/dialog/api/v1/dialogs/DIALOGID/conversation"
  

-d, - data

     

(HTTP)将POST请求中的指定数据发送到HTTP服务器,就像用户填写HTML表单并按下提交按钮时浏览器一样。这将导致curl使用content-type application / x-www-form-urlencoded将数据传递到服务器。比较-F, - form。

卷曲documentation