2014-12-23 3 views
1

Я пытаюсь выполнить следующий запрос CURL (как это предусмотрено Maxmind) в VBA:Curl через VBA (Maxmind)

curl -u "{user_id}:{license_key}" \ 
    "https://geoip.maxmind.com/geoip/v2.1/city/me?pretty" 

Забрав из других примеров, которые я попытался следующие:

Sub maxmind_query() 

Dim TargetURL As String 
Dim HTTPReq As Object 

TargetURL = "https://geoip.maxmind.com/geoip/v2.1/city/me" 
Set HTTPReq = CreateObject("WinHttp.WinHttpRequest.5.1") 
HTTPReq.Option(4) = 13056 ' 
HTTPReq.Open "PUT", TargetURL, False 
HTTPReq.SetCredentials "XXXXX", "YYYYYYYY", 0 
HTTPReq.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
HTTPReq.send ("test[status]=" & Forms!curl!Text0.Value & "&test2[status]=" & Text2.Value) 
MsgBox (HTTPReq.responseText) 

End Sub 

'''XXXX is my user id, YYYY my license key, removed for obvious reasons! 

Это ошибки в HTTPReq.send (требуется ошибка времени выполнения 424), которая меня сильно озарила.

У меня нет знаний о cURL, поэтому, несмотря на несколько дней исследований и слепых попыток, я изо всех сил пытаюсь добраться до этого кода.

Я только опыт работы с VBA, и что я знаю, самоучкой, так нежна ....

Если кто-то может поделиться своими знаниями, я бы очень признателен.

Дополнительная информация предоставляется Maxmind:

http://dev.maxmind.com/geoip/geoip2/web-services/#Per-Service_URIs http://dev.maxmind.com/geoip/geoip2/web-services/#Command_Line_curl_Example

Большое спасибо!

PS. Если я поместил URL-адрес в браузер, введите имя пользователя и пароль в поле сообщения, браузер вернет необходимую информацию, поэтому я знаю, что служба и мои учетные данные работают. Я предполагаю, что мой код даже не доходит до сих пор.

+0

Учитывая, что вы используете VBA, вам может быть лучше использовать [API MaxMind Legacy API] (http://dev.maxmind.com/geoip/legacy/web-services/). С API GeoIP2 вам необходимо выполнить базовую аутентификацию и затем декодировать ответ JSON. –

+0

Спасибо, oschwald. Это был мой первый подход, однако это не позволяет запросу Maxmind использовать строку «me» вместо определенного IP-адреса. – user2048265

ответ

1

Понял работает, вот мой подход:

Sub Maxmind() 

Dim MyRequest As Object 

    Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1") 
    MyRequest.Open "GET", _ 
    "https://geoip.maxmind.com/geoip/v2.1/city/me" 

    MyRequest.SetCredentials "user", "password", 0 

    ' Send Request. 
    MyRequest.Send 

    'And we get this response 
    MsgBox MyRequest.ResponseText 

End Sub 

В основном это было скопировано из здесь here так, благодаря предыдущим авторам.

Надеюсь, это поможет кому-то!

Смежные вопросы