в чем проблема с моим http GET? - PullRequest
0 голосов
/ 05 октября 2010

в 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% случаев он возвращает правильныйURL и 50% дает мне 400 bad request

что я делаю не так?

wrikken предложил мне получить URLencoder, но я считаю, что он правильно его кодировал!

1 Ответ

1 голос
/ 05 октября 2010

Вам необходимо url-кодировать все параметры запроса, иначе они могут привести к недействительным URL-адресам, в зависимости от их фактического значения (например, пробел должен быть + или %20). У Google есть множество примеров кодирования URL VBA, похоже, для него нет встроенной функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...