2013-06-22 158 views
1

我正在调用外部API。令人讨厌的是,它返回的数据位于标题中(文本响应为空)。如何在Http请求中访问响应头

如何访问响应的标题?

这就是我想:

Dim httpRequest, postResponse 
    Set httpRequest = Server.CreateObject("MSXML2.ServerXMLHTTP") 
    httpRequest.Open "POST", "http://www.api.com", False, "un", "pw" 
    httpRequest.SetRequestHeader "Content-Type", "application/json" 
    httpRequest.setRequestHeader "Content-Length", len(jsondata) 
    httpRequest.Send data 
    if httpRequest.status = 200 then 
     response.write httpRequest.getResponseHeader 
     response.write httpRequest.ResponseText 
    end if 
    Set httpRequest = nothing 

但它给我:

msxml3.dll error '80072f76' 

    The requested header was not found 

和奖金的问题:我只注意到 “MSXML2.ServerXMLHTTP” 的 “XML” 部分 - 我使用正确的协议吗?它一直用于直接的帖子,直到现在。

+0

是不是你缺少你想要检索哪个头?又名'httpRequest.getResponseheader(“服务器”)'[如图所示](http://msdn.microsoft.com/en-us/library/windows/desktop/ms765415(v = vs.85).aspx) – rene

回答

2

您需要指定要检索的response header名称:

response.write httpRequest.getResponseHeader("SomeHeaderName") 

有没有只有一个响应头。可能有很多。你有标准的响应标题,如Content-Type,你也可以有自定义标题。

和奖金的问题:我只注意到的 “MSXML2.ServerXMLHTTP”中的“XML”的一部分 - 我使用权协议?

是的,绝对的,这是从传统的ASP应用程序用来发送HTTP请求的正确的COM对象。

+0

谢谢Darin,那只是我正在寻找的答案 - 非常感谢 –