Watson 对话框 cURL 对话 post 请求未传递表单数据

Watson dialog cURL conversation post request not passing form data

当发出如下 post cURL 请求以尝试继续创建的对话 watson 而不是 returns 新对话时。

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)或弄清楚使用 post 请求继续对话到底有什么问题。

据我所知,我正在正确地用 c# 复制 post 请求,所以我认为没有两个问题。 (只有一个 post 请求问题,不是 cURL 问题,而是 C# 实现问题。)

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

服务需要一个 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) Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This will cause curl to pass the data to the server using the content-type application/x-www-form-urlencoded. Compare to -F, --form.

卷曲documentation