Здравствуйте, уважаемые форумчане.
Я в VBA не очень (учусь) и с такими задачами еще не сталкивался (в основном работаю с таблицами/листами/ячейками), - руководство поставило
задачу сделать макрос проверки параметров сайта в Excel на основании API c сервиса recipdonor.com (пытаюсь сделать такой запрос: ).
4-й день уже гуглю и читаю форумы, вроде все более-менее понятно, но у меня никак не получается получить ответ на запрос.. Подскажите пож-та, что я делаю не так. Я думал, логически, ничего сложного не должно быть - интернет есть - разберусь, а ничего не получается..((
Сам макрос выполняется - но результат "0", точнее - нет ответа..((
Буду премного благодарен за помощь.
Спасибо.
Положу еще здесь описание API для даного запроса с сайта recipdonor.com:
Проверка тИЦ, Я.Каталог и Зеркало
Для осуществления проверки тИЦ используются два API метода /session/new и /session/get.
В примере мы проверим на тИЦ сразу несколько сайтов mozilla.com, mozilla.ru, google.com, msdn.microsoft.com. Инициализация проверки осуществляется методом /session/new.
Создадим проверку послав в API запрос вида:
После выполнения запроса мы получим ответ,
что говорит об успешном создании сессии проверки, где
Id - уникальный идентификатор сессии
ExpireAt - сессия будет уничтожена в указанное время
SessionStatus - Статус ToCheck говорит нам о том, что сессия поставлена на проверку
Системе на проверку параметра тИЦ может уйти некоторое время, ответ вы можете получить не сразу.
Для получения результатов проверки необходимо использовать метод /session/get
Формируем запрос:
Получаем ответ вида:
Я в VBA не очень (учусь) и с такими задачами еще не сталкивался (в основном работаю с таблицами/листами/ячейками), - руководство поставило
задачу сделать макрос проверки параметров сайта в Excel на основании API c сервиса recipdonor.com (пытаюсь сделать такой запрос: ).
4-й день уже гуглю и читаю форумы, вроде все более-менее понятно, но у меня никак не получается получить ответ на запрос.. Подскажите пож-та, что я делаю не так. Я думал, логически, ничего сложного не должно быть - интернет есть - разберусь, а ничего не получается..((
| Код |
|---|
Sub Zapros()
Set HTTP = CreateObject("MSXML2.XMLHTTP")
apiBase64 = "Basic RjkxNjhDNUUtQ0VCMi00ZmFhLUI2QkYtMzI5QkYzOUZBMUU0Ong="
sURL1 = "http://recipdonor.com/api/session/new HTTP/1.1"
sql1 = "<InitSession><Parameters><TaskVariant>Cy</TaskVariant></Parameters><DomainNames><string>mozilla.com</string></DomainNames><Refresh>true</Refresh></InitSession>"
HTTP.Open "PUT", sURL1, True
HTTP.SetRequestHeader "Host", "recipdonor.com:977"
HTTP.SetRequestHeader "Content-type", "text/xml; charset=utf-8"
HTTP.SetRequestHeader "Authorization", apiBase64
HTTP.SetRequestHeader "Content-Length", Len(sql1)
HTTP.send sql1
Do While HTTP.readyState <> 4
DoEvents
Loop
otvet = HTTP.responseText
[A1].Value = otvet
End Sub |
Буду премного благодарен за помощь.
Спасибо.
Положу еще здесь описание API для даного запроса с сайта recipdonor.com:
Проверка тИЦ, Я.Каталог и Зеркало
Для осуществления проверки тИЦ используются два API метода /session/new и /session/get.
В примере мы проверим на тИЦ сразу несколько сайтов mozilla.com, mozilla.ru, google.com, msdn.microsoft.com. Инициализация проверки осуществляется методом /session/new.
Создадим проверку послав в API запрос вида:
Скрытый текст |
|---|
| PUT /api/session/new HTTP/1.1 Authorization: Basic RjkxNjhDNUUtQ0VCMi00ZmFhLUI2QkYtMzI5QkYzOUZBMUU0Ong= Content-Type: text/xml; charset=utf-8 Host: recipdonor.com:977 Content-Length: 312 <InitSession> <Parameters> <TaskVariant>Cy</TaskVariant> </Parameters> <DomainNames> <string>mozilla.com</string> <string>mozilla.ru</string> <string>google.com</string> <string>msdn.microsoft.com</string> </DomainNames> <Refresh>true</Refresh> </InitSession> |
Скрытый текст |
|---|
| <ApiSessionItemSlimContract> <Id>f1218977-7a63-43eb-8e5c-a272ffb3886e</Id> <ExpireAt>2014-12-18T20:24:50.8100568+02:00</ExpireAt> <Progress>0</Progress> <SessionStatus>ToCheck</SessionStatus> </ApiSessionItemSlimContract> |
Id - уникальный идентификатор сессии
ExpireAt - сессия будет уничтожена в указанное время
SessionStatus - Статус ToCheck говорит нам о том, что сессия поставлена на проверку
Системе на проверку параметра тИЦ может уйти некоторое время, ответ вы можете получить не сразу.
Для получения результатов проверки необходимо использовать метод /session/get
Формируем запрос:
Скрытый текст |
|---|
| GET HTTP/1.1 Authorization: Basic RjkxNjhDNUUtQ0VCMi00ZmFhLUI2QkYtMzI5QkYzOUZBMUU0Ong= Content-Type: text/xml; charset=utf-8 Host: recipdonor.com:977 |
Скрытый текст |
|---|
| <ApiSessionItemContract> <Id>f1218977-7a63-43eb-8e5c-a272ffb3886e</Id> <ExpireAt>2014-12-18T20:24:52.9004605+02:00</ExpireAt> <Progress>100</Progress> <SessionStatus>Completed</SessionStatus> <Domains> <DomainData IsValid="true"> <DomainName>mozilla.com</DomainName> <Values> <Data> <Parameter>Cy</Parameter> <Value xsi:type="CyApiData"> <Cy>12000</Cy> <Yaca>0</Yaca> <YaBarMirrow>0</YaBarMirrow> </Value> </Data> </Values> </DomainData> <DomainData IsValid="true"> <DomainName>mozilla.ru</DomainName> <Values> <Data> <Parameter>Cy</Parameter> <Value xsi:type="CyApiData"> <Cy>-666</Cy> <Yaca>0</Yaca> <YaBarMirrow>0</YaBarMirrow> </Value> </Data> </Values> </DomainData> <DomainData IsValid="true"> <DomainName>google.com</DomainName> <Values> <Data> <Parameter>Cy</Parameter> <Value xsi:type="CyApiData"> <Cy>190000</Cy> <Yaca>Hi-Tech/Интернет/Поисковые системы</Yaca> <YaBarMirrow>1</YaBarMirrow> </Value> </Data> </Values> </DomainData> <DomainData IsValid="true"> <DomainName>msdn.microsoft.com</DomainName> <Values> <Data> <Parameter>Cy</Parameter> <Value xsi:type="CyApiData"> <Cy>6400</Cy> <Yaca>Hi-Tech/Программы/Операционные системы/Windows</Yaca> <YaBarMirrow>0</YaBarMirrow> </Value> </Data> </Values> </DomainData> </Domains> </ApiSessionItemContract> |