在经典的asp中使用REST的GET

时间:2017-03-03 13:39:38

标签: rest asp-classic

首先,我已经查看了SO,并在此处找到了类似的问题:

Calling REST web services from a classic asp page

但是,这并不能解决我的问题。我无法找到一种方法来检索我的电话提供的正确信息

function determineLocationId(identifier)    

    Dim http: Set http = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
    Dim privateKey
    privateKey = "myKey"

    IdentifyUrl = "https://sandbox.uberall.com/api/locations/?identifier=" & identifier & "&private_key=" & privateKey
    With http
      Call .Open("GET", identifyUrl, False)
      Call .Send()
    End With
    If Left(http.Status, 1) = 2 Then
      response.write("updated")
    Else
      'Output error
      Call Response.Write("Server returned: " & http.Status & " " & http.StatusText)
    End If

    response.write(identifyUrl)
    response.end()

    determineLocationId = identifier
end function

当我将identifyUrl打印到屏幕并复制&将其粘贴到我的浏览器中,我得到正确的输出。一个json格式的对象,包含我需要的信息。

但是,如果我打印http.responseBody,它只会产生一些像这样的中文字符:

  

佄呃偙⁅呈䱍倠䉕䥌⁃ჲ⼯㍗⽃䐯䑔䠠䵔⁌⸴㄰吠慲狝莹潩虑⽬䔯≎∠瑨灴⼺眯睷眮⸳牯⽧剔栯浴㑬氯浔敳搮摴㸢ⴭⴭⴭ䐠瑡虑敭>敤慦汵⹴獡⁰㉖〮‰〮⸸〲㈱䠠⵳楗汬汬墙楥敢杲牥ჰ

我做错了什么?链接肯定是正确的。我还尝试添加:

Call .SetRequestHeader("Content-Type", "application/json")

没有成功

1 个答案:

答案 0 :(得分:0)

嗯,事实证明,使用responseBody并不正确。根据WinHttpRequest的MSDN-PageresponseBody正在检索此内容:

  

以无符号字节数组的形式检索响应实体主体。

在我的情况下,我不得不切换到reponseText,这是正确的事情:

  

以文本形式检索响应实体主体。