VBA XML HTTP заголовок setrequest в GET-запросе на основе предыдущего значения getresponseheader (token) - PullRequest
0 голосов
/ 11 декабря 2018

Для проекта очистки продукта мне нужно передать значение в заголовке запроса GET с XMLHTTP в VBA.Значение / токен, который необходимо передать, извлекается из предыдущего запроса XMLHTTP GET (getReponseHeader) и сохраняется в переменной в VBA.

При передаче значения с setRequestHeader в запрос PUT передается правильное значениеправильно (при проверке с помощью getReponseHeader впоследствии).Но при отправке значения в GET-запросе оно не работает (извлекается другой токен).

При подключении правильной информации магазина с активным сеансом (путем отправки токена в заголовке) определенной ценыдля продукта может быть извлечено, что связано с конкретным магазиномДля образца продукта мне нужна цена 1,87.Когда ни один магазин не связан с сессией, извлекается цена 1,97.Вот почему мне нужно отправить информацию заголовка с правильным x-jumbo-token в следующих запросах GET.

Вот что мне нужно сделать:

  • Извлечь токен (x-jumbo-token) из первого запроса XMLHTTP
  • Сохраните / сохраните этот токен в переменной VBA (и отправьте его в заголовке вместе со всеми следующими запросами).
  • Отправьте запрос PUTс некоторой информацией о хранилище в теле JSON и отправкой x-jumbo-token также в качестве заголовка запроса (информация о хранилище теперь подключена к сеансу).
  • Отправка запроса GET на другой URL-адрес (вместе с сеансомтокен в заголовке), чтобы извлечь информацию о продукте для правильного магазина.

Вот код, который у меня есть в настоящее время.

Sub GetJumboPriceXML()

Dim XMLReq As New MSXML2.XMLHTTP60
Dim JumboPrice As Double
Dim SKU_tag As String, SKU_url As String
Dim Jumbo_token As String
Dim Body As String

'sample product (MARS 225gr) --> price 1,97 (when no store is selected), 1,87 when correct store is linked (store id 3065, complexNumber 33164)
SKU_tag = "153501PAK"
SKU_url = "http://mobileapi.jumbo.com/v2/products/" & SKU_tag

'get the x-jumbo-token value from the configuration page
XMLReq.Open "GET", "http://mobileapi.jumbo.com/v2/configuration", False
XMLReq.send
'store in variable
Jumbo_token = XMLReq.getResponseHeader("x-jumbo-token")
Debug.Print Jumbo_token

send JSON body with store info together with x-jumbo-token in header to select correct store
Body = "{""id"":""3065"", ""complexNumber"":""33164""}"
XMLReq.Open "PUT", "http://mobileapi.jumbo.com/v2/users/me/homestore", False
XMLReq.setRequestHeader "x-jumbo-token", Jumbo_token
XMLReq.send (Body)
'check on response value of x-jumbo-token (is equal to the token I sent in header), all seems fine until this point
Debug.Print XMLReq.getResponseHeader("x-jumbo-token")

'send final request to product page and extract the price info
XMLReq.Open "GET", SKU_url, False
XMLReq.setRequestHeader "x-jumbo-token", Jumbo_token
XMLReq.send

JumboPrice = Split(Split(XMLReq.responseText, "prices"":{""price"":{""currency"":""EUR"",""amount"":")(1), "}")(0) / 100

'debug print product price > 1,97 is displayed instead of 1,87 (when the correct store is connected to the session).
Debug.Print JumboPrice
'x-jumbo-token from RepsonseHeader is different vs. the one I sent as header with the request.
Debug.Print XMLReq.getResponseHeader("x-jumbo-token")

End Sub

Любые предложения, как я мог бы передать правильныйтокен в последующем GET-запросе и извлеките тот же x-jumbo-токен в getResponseHeader окончательного запроса, и извлеките правильную цену 1,87?

...