2010-10-05 15 views
0

en VBA je crée une URL:quel est le problème avec mon http GET?

URL = "http://api.local.yahoo.com/MapsService/V1/geocode?appid=" & yahoo & "&street=" & street & "&city=" & city & "&state=" & state & "&zip=" & zip 

par exemple, il se fixe à égaler ceci:

http://api.local.yahoo.com/MapsService/V1/geocode?appid=username123&street=1893 n. clyde morris blvd &city=daytona beach&state=FL&zip=32117 

quand je vais manuellement à cette URL, il fonctionne très bien.

mais quand je fais ceci:

'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 

il me donne cela pour la réponse:

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........" 

s'il vous plaît noter que 50% du temps, il renvoie l'URL correcte et 50% donne moi un 400 bad request

qu'est-ce que je fais mal? Wikken a suggéré que j'obtiens un URLencoder, mais je crois qu'il l'encodait correctement!

Répondre

1

Vous devez url-encoder tous vos paramètres de requête, sinon ils peuvent entraîner des URL non valides, en fonction de leur valeur réelle (par exemple, un espace doit être un + ou un %20). Google a une multitude d'exemples d'encodage d'URLs VBA, il semble qu'il n'y ait pas de fonction intégrée pour cela.

+0

@wrikken: merci beaucoup pour votre aide. pouvez-vous s'il vous plaît me montrer un exemple –

+0

Citer 'Wrikken': _ "Google a une multitude d'exemples d'encodage URL VBA." _ – Wrikken

+0

@wrikken: merci. im get L'URL n'utilise pas de protocole reconnu "- qu'est-ce que cela signifie? –