Я пытаюсь использовать VBA Excel для доступа к API, предоставляемому веб-сайтом www.myfxbook.com. Документация по API находится здесь (https://www.myfxbook.com/fr/api). Шаги для получения данных следующие:
- Вход через API входа
- Получить идентификатор сеанса из ответа API входа
- Получить данные на основе этот идентификатор сеанса через различные другие API
- Выход из системы через API выхода для создания нового сеанса
Проблема, с которой я сталкиваюсь, заключается в том, что даже несмотря на то, что API входа и выхода из системы используются и не выдает ошибок, я всегда получаю один и тот же идентификатор сеанса, когда пытаюсь использовать его через Excel VBA. С другой стороны, использование одних и тех же URL-адресов через Python или даже браузер каждый раз выдает мне другой идентификатор сеанса. я могу использовать только Excel для этого проекта. Может ли кто-нибудь помочь мне, как получить другой идентификатор сеанса при успешном выходе из системы?
Для этого я использую приведенный ниже код. Я скрыл (*******) идентификатор электронной почты и пароль в целях безопасности.
Sub extract()
Dim sht1 As Worksheet
Dim email As String
Dim password As String
Dim accountName As String
Dim url As String
Dim hreq As Object
Set hreq = CreateObject("MSXML2.XMLHTTP")
Dim accountID As String
Set sht1 = Sheets(1)
email = "*******"
password = "********"
accountName = "all day multiple currency coinexx"
loginURL = "https://www.myfxbook.com/api/login.xml?email=" + email + "&password=" + password
hreq.Open "GET", loginURL, False
hreq.Send
Dim xmlDoc As New MSXML2.DOMDocument60
Dim response As String
response = hreq.ResponseText
If Not xmlDoc.LoadXML(response) Then
MsgBox ("Load Error")
End If
Dim xnodelist As MSXML2.IXMLDOMNodeList
Set xnodelist = xmlDoc.getElementsByTagName("session")
Dim sessionID As String
sessionID = xnodelist(0).Text
'Do Something here to get data. This part is working fine.
logoutURL = "https://www.myfxbook.com/api/logout.xml?session=" + sessionID
hreq.Open "GET", logoutURL, False
hreq.Send
response = hreq.ResponseText
If Not xmlDoc.LoadXML(response) Then
MsgBox ("Load Error")
End If
End Sub