我创建了一个函数,使用绑定到Excel工作簿的VBA发布到应用程序,一次创建许多记录。到目前为止,在创建记录之前,我无法获得成功的身份验证方法。这是我到目前为止所拥有的。
Dim Sheet As Worksheet
Dim Row As Integer
Dim sURL As String
Dim sContent As String
Dim oHttp As Object
Dim rContent
Set Sheet = Sheets("APISend")
Set oHttp = CreateObject("MSXML2.ServerXMLHTTP")
sURL = "https://cityworks.cityofdenton.com:9000/Cityworks/services/AMS/Authentication/Authenticate/"
sContent = Sheet.Range("C1").Value
oHttp.Open "POST", sURL, False
oHttp.send (sContent)
rContent = oHttp.ResponseText
Sheet.Range("D1").Value = rContent
Sheet.Range("E1").Value = sContent
Set Object = Nothing
C1中的值为:{LoginName:“*****”,密码:“*****”}
我收到回复:{“Value”:false,“Status”:1,“Message”:“LoginName未填充。”}
以下网址字符串在粘贴到浏览器时有效:https://cityworks.cityofdenton.com:9000/Cityworks/services/AMS/Authentication/Authenticate/?data= {“LoginName”:“*****”,“密码”:“*****”}
我是JSON的新手,所以我确信我错过了一些简单的东西。我一直在尝试我看到的留言板,但到目前为止没有运气。有人可以提供解决方案吗?
谢谢! 泰勒
编辑: 这是解决方案。对于我的API,我必须在sURL变量中包含所有内容,而不使用sContent作为Body输入。代码复制如下。
Set Sheet = Sheets("APISend")
Set oHttp = CreateObject("MSXML2.ServerXMLHTTP")
sContent = Sheet.Range("C1").Value
sURL = "https://cityworks.cityofdenton.com:9000/Cityworks/services/AMS/Authentication/Authenticate/?data=" & sContent
sContent = Sheet.Range("C1").Value
oHttp.Open "POST", sURL, False
oHttp.send sURL
rContent = oHttp.ResponseText
Sheet.Range("D1").Value = rContent
Sheet.Range("E1").Value = sContent
答案 0 :(得分:1)
我相信您没有发送有效的JSON
字符串:
确保Range("C1")
内的字符串在引号之间具有LoginName和Password,如下所示:
{"LoginName":"*****", "Password":"*****"}
修改强>
检查URL
之后,我可以说您需要在查询字符串/?data={"LoginName":"*****","Password":"*****"}
中传递数据,以便后端进行身份验证。
POST
或GET
可以重现相同的结果。
但是,如果您将凭据作为请求body
传递,则会出现"LoginName not populated."
错误。