来自 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 工具包重构您自己的代码以提取您想要的数据:
我在 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 工具包重构您自己的代码以提取您想要的数据: