cURL через VBA (Maxmind)

Я пытаюсь запустить следующий запрос cURL (предоставленный Maxmind) в VBA:

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-адрес в браузер, ввожу имя пользователя и пароль в окно сообщения, браузер возвращает необходимую информацию, поэтому я знаю, что служба и мои учетные данные работают. Я думаю, что мой код даже не зашел так далеко.


person Smartbuild    schedule 23.12.2014    source источник
comment
Учитывая, что вы используете VBA, вам лучше использовать устаревший API MaxMind. С API GeoIP2 вам необходимо выполнить базовую аутентификацию, а затем декодировать ответ JSON.   -  person Greg Oschwald    schedule 27.12.2014
comment
Спасибо, Ошвальд. Это был мой первый подход, однако он не позволяет запросу Maxmind использовать строку «я» вместо определенного IP-адреса.   -  person Smartbuild    schedule 27.12.2014


Ответы (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

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

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

person Smartbuild    schedule 27.12.2014