asp.net - POST 参数未使用 VBA 传递到 Web API

标签 asp.net ms-access asp.net-web-api vba

我有一个标准的 WebAPI,它接受 POST 并获取这些参数并处理某些事情。我不确定问题是出在 VBA 还是 ASP.Net WebAPI,所以我交叉发帖。

我使用 Postman 来测试 API,当我发布键/值参数时它工作正常。

我也尝试了以下方法和相关参数,得到了相同的结果:

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")

我在使用 VBA 时遇到问题,在 WebAPI 上的 Visual Studio 中进行调试时,我看不到我在任何地方发布的值。就像请求是空白的一样。我的 WebAPI 随后抛出错误,因为缺少参数并且需要某些参数。

我不确定这是否是 VBA 端或 ASP.NET WebAPI 端的问题,因此我交叉发帖,希望有人能够突出显示或发现我做错了什么。

Private Sub Command4_Click()

Dim argumentString1 As String

argumentString1 = "companyId=228&secondsToLog=15&subject=TestBackup123&description=TestDescription" & _
"&category=&tag=&ticketType=task&assignee=gavin&requesterEmail=bob@smith.com" & _
"&submitterName=gavin&status=open&priority=normal"

Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "http://localhost:64874/api/zendeskhelper"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send (argumentString1)


txtresult = objHTTP.responsetext & ": " & argumentString1
End Sub

Web API 结构如下所示:

public HttpResponseMessage Post([FromUri] TicketBody ticket)
{
// Nothing is bound to ticket like it is in Postman
}

任何帮助或指示将不胜感激!

最佳答案

您发送数据的方式,您需要删除[FromUri]。使用 [FromUri] 时,ASP.NET 引擎将在 Uri 中查找数据,而不是请求正文。

public HttpResponseMessage Post(TicketBody ticket)
{
    // 'ticket should not be null now
}

另一方面,如果您需要保留 [FromUri] 您可以将调用更改为:

Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "http://localhost:64874/api/zendeskhelper?" & argumentString1 
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("")

关于asp.net - POST 参数未使用 VBA 传递到 Web API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37917949/

相关文章:

c# - 如何以编程方式调整图片大小并将其添加到网站

javascript - 仅在按下 Tab 键时调用 onBlur 事件

c# - 导出到 Excel 作为 Web API 中的响应

c# - 复选框上方的复选框标签。如何?

javascript - 在 JavaScript 中注入(inject)今天的日期

vba - 在过滤器中使用 "Or"

ms-access - MS Access CurrentDb.execute 不起作用

vba - 为什么我的 RecordCount 不应该是 0?

json - 生成 swagger json 格式的 WebAPI 文档

azure - 注销在 Microsoft Azure Web App 中不起作用