我正在创建一个URL:
URL = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=" & yahoo & "&street=" & street & "&city=" & city & "&state=" & state & "&zip=" & zip
例如,它将自己设置为等于:
http://api.local.yahoo.com/MapsService/V1/geocode?appid=username123&street=1893 n. clyde morris blvd &city=daytona beach&state=FL&zip=32117
当我手动转到此URL时,它工作得很好。
然而,当我这样做时:
'Create Http object
If IsEmpty(http) Then Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
'Send request To URL
http.Open "GET", URL
http.send
'Get response data As a string
response = http.responseText
它给了我这个回复:
response="Watch : : response : "<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><title>Yahoo! - 400 Bad Request</title><style>
/* nn4 hide */
/*/*/
bod........"
请注意,50%的时间会返回正确的网址,而50%会给我400 bad request
我做错了什么?
wrikken建议我获得一个URLencoder,但我相信它正确编码!
答案 0 :(得分:1)
您需要对所有查询参数进行网址编码,否则可能会导致网址无效,具体取决于其实际值(例如,空格应为+
或%20
)。 Google有大量的VBA网址编码示例,它似乎没有内置功能。</ p>