VBA - Excel - WinHTTPRequest返回空响应文本和正文

时间:2014-07-26 21:01:09

标签: vba winhttprequest

晚上好,

我在运行下面的代码时遇到响应文本和返回响应正文时遇到问题。 " HTTP / 1.1 200 OK"消息与响应标头一起返回。我已经使用Fiddler2确认了这个结果,并且还查看了netsh跟踪日志。

其他网址(http://real-chart.finance.yahoo.com/table.csv?s=CELG&d=6&e=26&f=2014&g=d&a=2&b=26&c=1990&ignore=.csv)例如返回响应文本和响应正文。

感谢任何帮助。

Sub testlogin()

    fileUrl = "http://financials.morningstar.com/ajax/ReportProcess4CSV.html?t=XNYS:HFC&region=USA&culture=en-US&productCode=COM&reportType=is&period=&dataType=A&order=desc&columnYear=5&rounding=3&view=raw"

    Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5.1")

    WHTTP.Open "GET", fileUrl, False

    WHTTP.Send

    MsgBox WHTTP.Status
    MsgBox WHTTP.ResponseText
    MsgBox WHTTP.ResponseBody
    MsgBox WHTTP.GetAllResponseHeaders

    Set WHTTP = Nothing

End Sub

1 个答案:

答案 0 :(得分:0)

您是否研究了GET对两个网址的调用返回的响应标头?

  

晨星是这样的:

Cache-Control: max-age=0
Connection: keep-alive
Date: Sat, 26 Jul 2014 22:07:33 GMT
Pragma: no-cache
Content-Length: 0
===>> Content-Type: text/html;charset=UTF-8 <<===
===>> Content-Encoding: gzip <<===
Server: Apache
Set-Cookie: JSESSIONID=6FAF41A612ABB32B0C670AB07BF0D8A5; HttpOnly
Vary: User-Agent
Vary: Accept-Encoding
com.coradiant.appvis: vid=ad&sid=CONTROLLER_1&tid=da615c36-2a18-4129-bcd7-1cbb139ab52b
Content-Disposition: attachment;filename=""HFC Income Statement.csv""
ExpiresDefault: access plus 2 hours
  

Yahoo Finance 是这样的:

Cache-Control: private
Connection: close
Date: Sat, 26 Jul 2014 22:10:00 GMT
Transfer-Encoding: chunked
===>> Content-Type: text/csv <<===
P3P: policyref=""http://info.yahoo.com/w3c/p3p.xml"", CP=""CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV""
Set-Cookie: B=d3svnbl9t89po&b=3&s=4i; expires=Tue, 26-Jul-2016 22:10:00 GMT; path=/; domain=.yahoo.com
Vary: Accept-Encoding

我已经突出显示了Content-TypeContent-Encoding标题(如果可用)。

基本上,两次调用返回的内容不同。显然,Excel可以解释第二种情况,其中内容类型是&#34; text / csv&#34;但第一个是一个奇怪的gzipped html页面,我想Excel无法理解。

我无法为您解决此问题,但标题的内容无疑可以解释您所看到的行为的差异。