Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HTTP向Python请求VBA代码不工作_Python_Vba_Pandas - Fatal编程技术网

HTTP向Python请求VBA代码不工作

HTTP向Python请求VBA代码不工作,python,vba,pandas,Python,Vba,Pandas,由于某种原因,我无法转换此VBA代码。在运行Python脚本时,我一直获得401或400状态。此VBA代码工作正常,并获得所需的令牌 Dim user Dim pwd Dim url Dim response Dim sessionid url = "https://xxxx" sRequest = "{""itrent"": {""login"": {""user"": ""xxx"",""pwd"": ""xxx""}}}" response = HTTPPost (url, sRe

由于某种原因,我无法转换此VBA代码。在运行Python脚本时,我一直获得401或400状态。此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)

也许可以尝试以下公式。注意,“不需要转义;使用外部单引号

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)

仍然不起作用。我又试了一次。这就是我开始的地方!非常令人沮丧!没关系。堆栈跟踪是什么?你能粘贴到pastebin.com吗?你试过注释中的替代标题吗?当然可以删除个人信息。还有,有API文档吗?这是API文档。他们混合了SOAP API和poor文档,REST API也是如此。使用json头时发生了什么?您可以尝试在不使用
Accept
content-length头的情况下发送它吗?