【发布时间】:2016-07-05 19:23:39
【问题描述】:
我正在编写一个非常简单的宏,它需要向服务器发出 HTTP GET 请求并且响应并不重要(它会在服务器上启动一个进程)。 HTTP GET 不需要身份验证。
我正在使用以下代码“成功”地执行此操作(服务器日志表明请求已发送到服务器,但服务器正在运行 HTTP 406):
Function callAPI(Url As String)
With ActiveSheet.QueryTables.Add(Connection:="URL;" & Url, Destination:=Range("D15"))
.PostText = ""
.RefreshStyle = xlOverwriteCells
.SaveData = True
.Refresh
End With
End Function
但我从服务器收到以下响应:
Unable to open http://someurl.com Cannot locate the Internet server or proxy server.
我可以看到服务器返回一个 HTTP 406,经过一些研究,因为 GET 请求没有发送正确的 Content-Type 标头。
所以我的问题是 - 如何告诉 ActiveSheet.QueryTables.Add 设置标头,或者如何修改我的 NGINX 配置以支持这个特定的 GET CALL
【问题讨论】:
-
也许检查一下这个stackoverflow.com/questions/15981960/…,它基本上是说使用cURL而不是使用
QueryTables方法作为一种HTTP GET方式。您将能够通过这种方式设置请求标头。