我的http GET有什么问题?

时间:2010-10-05 00:06:40

标签: string http vba url get

在VBA中

我正在创建一个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,但我相信它正确编码!

1 个答案:

答案 0 :(得分:1)

您需要对所有查询参数进行网址编码,否则可能会导致网址无效,具体取决于其实际值(例如,空格应为+%20)。 Google有大量的VBA网址编码示例,它似乎没有内置功能。<​​/ p>