HTTP-запрос VBA-кода к Python не работает - PullRequest
0 голосов
/ 18 октября 2019

По какой-то причине я не могу конвертировать этот код VBA. Я продолжаю получать статус 401 или 400 при запуске скрипта Python. Этот код VBA работает нормально и получает необходимый токен

Dim user
Dim pwd
Dim url
Dim response
Dim sessionid


url = "https://xxxx"

sRequest = "{""itrent"": {""login"": {""user"": ""xxx"",""pwd"": ""xxx""}}}"

response = HTTPPost (url, sRequest)

sessionid = ""
If InStr(response,"sessionid") > 0 Then

sessionid = getSession(response)
Else
MsgBox "No Session received : " + response
End If

MsgBox response

Function HTTPPost(sUrl, sRequest)
set oHTTP = CreateObject("Microsoft.XMLHTTP")
oHTTP.open "POST", sUrl,False
oHTTP.setRequestHeader "Content-Type", "text/plain"
oHTTP.setRequestHeader "Content-Length", Len(sRequest)
oHTTP.send sRequest
HTTPPost = oHTTP.responseText
End Function

Мой код предназначен для Python, пытающегося конвертировать из сценария VBA:

import urllib
from urllib.parse import urlencode
import ssl
import requests
import json
from itertools import chain
import timeit
import pandas as pd
from pandas.io.json import json_normalize
import numpy as np
import datetime
from requests.auth import HTTPBasicAuth


# Todays Date
d = datetime.datetime.today().strftime('%d-%m-%Y')
TOKEN_API_URL = 'https://'
sRequest = "{""itrent"": {""login"": {""user"": ""xxxx"",""pwd"": ""Pxxx""}}}"
session = requests.Session() 
session.headers = {'Accept':str(len(sRequest)), 'Content-Type':"text/plain"}
    # data = urlencode(payload).encode()

login = session.post(TOKEN_API_URL,data=json.dumps(sRequest))
 print(login)

1 Ответ

0 голосов
/ 18 октября 2019

Возможно, попробуйте следующую формулировку. Обратите внимание, что "не нужно экранировать; используйте внешние одинарные кавычки.

import requests

TOKEN_API_URL = 'https://xyz'
data = '{"itrent": {"login": {"user": "xxx","pwd": "xxx"}}}' 
headers = {'Content-Length':str(len(data)),'Content-Type':'text/plain'} 

r = requests.post(TOKEN_API_URL, headers = headers, data = data)
print(r)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...