来自 RallyDev API 的 "GET" 响应中的垃圾

Rubbish in "GET" response from RallyDev API

我在 Excel 中有一个函数:

Function getState(Defects As Object) As String

Dim str As String
Dim res As String
Dim was As Boolean
Dim sURL As String
Dim oRequest As Object
Set oRequest = CreateObject("WinHttp.WinHttpRequest.5.1")

was = False

For Each defect In Defects
    If was = False Then
        str = "(FormattedID = """ & defect & """)"
        res = str
        was = True
    Else
        res = res & " OR " & str
    End If
Next defect

sURL = "https://rally1.rallydev.com/slm/webservice/v2.0/defect?query=(" & res & ")&fetch=FormattedID,State"

oRequest.Open "GET", sURL, True
oRequest.setRequestHeader "Content-Type", "application/json;charset=UTF-8"
oRequest.Send
oRequest.WaitForResponse
' Set Defects = oRequest.ResponseText
Debug.Print (oRequest.ResponseText)

End Function

不幸的是,我得到的是垃圾而不是 json 回复,例如: ? i?ANA0E?=A(utU ¤RoP°irC°%'.o$%·CI{OOYO????uApeaBRM?Zb?u?OWo?"{oSCy5?(}e??e?qBA"qnu~E·Uu?|?aRbE?a>anµ?c?9P=?A[­Oul?0i O {PZS?Af~???^??k??R˜?|©?#iEoPNO|?¦'y?vO^Ol? ]?g?#?AjAa?\aC¤y %©e»]"IHog? ?@:?· (???"¶E9yog?Az?7bw?/#?eWp^u?ZU?u??3?q?A)cy7µe?E

能否请您看一下并提供解决方法?

提前致谢!

响应已压缩。尝试为 Accept-Encoding: 身份设置请求 header 或解压缩响应。

Larry 的回答是正确的。

顺便说一句,如果您需要将数据从 Rally 提取到 Excel,您最好的选择是 Excel:

的 Rally 插件

https://help.rallydev.com/rally-add-excel

既然您提到了 VBA,您可能正在努力在 Excel 中构建一些自动化,Excel 加载项不支持。 VBA 有一个 alpha 级 Rally Rest 工具包。它为您处理身份验证和 REST serialization/de-serialization,因此可以减轻您的一些编码工作。

它是非官方的,不受 Rally 支持,但值得一试。由于不受支持,如果您 运行 遇到问题,Rally 无法帮助您。您必须根据 VBA 工具包重构您自己的代码以提取您想要的数据:

https://github.com/markwilliams970/RallyRestToolkitForVBA