0

这是问题所在:我有以下代码

Dim Client As New WebClient
Dim Request As New WebRequest
Dim Response As WebResponse
    
Dim responseData As Scripting.Dictionary
    
Request.UserAgent = VBA.Environ("USERNAME")
Request.AddHeader "AuthToken", m_token
Request.AddHeader "APIKey", m_key
Request.Method = WebMethod.HttpPost
    
Dim Auth As New HttpBasicAuthenticator
Auth.Setup "username", "Password"
Set Client.Authenticator = Auth
    
Dim Body As New Dictionary
If condition1 Then
        Body.Add "status", "open"
Else
        Body.Add "status", "closed"
End If
    
Client.BaseUrl = server_api & "Tasks/" & m_id
    
Set Request.Body = Body
Set Response = Client.Execute(Request)
    
If (Response.StatusCode = Ok) Then
        Debug.Print TypeName(Response.Data) 'returns Dictionary
        Set responseData = Response.Data '.Item(1)
        Debug.Print "ID: " & responseData("id")
        Debug.Print "message: " & responseData("message")
End If

请求成功执行,程序没有错误,并且Response.data有 typename Dictionary,但消息是:

表中不存在“statut”

因此,我尝试通过将“状态”名称更改为所需的“tableColunm”来解决此问题,该名称在数据库中具有 int32 作为类型。

应用的更改在以下代码中,并带有注释结果:

    If condition1 Then
        Body.Add "tableColunm", 1 'I tried also with "1"
    Else
        Body.Add "tableColunm", 2 ' I tried also with "2"
    End If        Client.BaseUrl = server_api & "Tasks/" & m_id
    
    Set Request.Body = Body
    Set Response = Client.Execute(Request)
    
    If (Response.StatusCode = Ok) Then
        Debug.Print TypeName(Response.Data) 'returns Collection
        Set responseData = Response.Data '.Item(1) ' error here, and the program crashed
        Debug.Print "ID: " & responseData("id")
        Debug.Print "message: " & responseData("message")
    End If

现在的typenameResponse.data是collection,我认为这就是程序崩溃的原因

有什么帮助吗?谢谢

4

1 回答 1

0

最后,添加这个之后

For Each elt In Response.Data
    Debug.Print TypeName(elt)
Next

循环只执行一次,输出Dictionary. 这意味着在第二种情况下,字典被封装在一个集合中

所以我一起工作,elt这解决了我的问题

于 2022-02-09T12:36:08.720 回答