我对Python比较陌生,所以想要一些帮助,我创建了一个脚本,它只使用请求库和基本身份验证来连接到API并返回xml或Json结果。
# Imports
import requests
from requests.auth import HTTPBasicAuth
# Set variables
url = "api"
apiuser = 'test'
apipass = 'testpass'
# CALL API
r = requests.get(url, auth=HTTPBasicAuth(apiuser, apipass))
# Print Statuscode
print(r.status_code)
# Print XML
xmlString = str(r.text)
print(xmlString)
但是它返回一个空字符串。
如果我使用浏览器调用api并输入提示,我会得到以下回复。
<Response>
<status>SUCCESS</status>
<callId>99999903219032190321</callId>
<result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Dummy">
<authorFullName>jack jones</authorFullName>
<authorOrderNumber>1</authorOrderNumber>
</result>
</Response>
谁能告诉我哪里出错了。
答案 0 :(得分:0)
如果请求为空,甚至没有状态代码我建议在打印之间等待一段时间。也许服务器花时间将响应返回给您。
import time
time.sleep(5)
不是最好的东西,但值得尝试
How can I make a time delay in Python?
我猜执行期间没有错误
编辑:nvm,你提到你有一个状态代码,我以为你确实没有做任何事情。
另一方面,如果你使用python3,你必须使用Print(),它取代了Print
答案 1 :(得分:0)
您要连接哪些API?
尝试在标题中添加用户代理:
r = requests.get(url, auth=HTTPBasicAuth(apiuser, apipass), headers={'User-Agent':'test'})
答案 2 :(得分:0)
运行此命令并查看您获得的回复。
import requests
url = "https://google.com"
r = requests.get(url)
print(r.status_code)
print(r.json)
print(r.text)
当您开始在GET,PUT,DELETE或POST请求中传递内容时,您将在请求中添加它。
url = "https://google.com"
headers = {'api key': 'blah92382377432432')
r = requests.get(url, headers=headers)
然后你应该看到相同类型的回复。长话短说, 打印(r.text)以查看响应,然后一旦看到响应的格式,就可以随意移动它。
答案 3 :(得分:0)
仅当身份验证失败或被拒绝时,我的响应为空。 HTTP状态仍为≤400。 但是,在标题中您可以找到:
void updateView(CameraData * cameraData, MouseData * mouseData, MouseParameters * mouseParameters){
float deltaX = mouseData->currentX - mouseData->lastX;
float deltaY = mouseData->currentY - mouseData->lastY;
mouseData->lastX = mouseData->currentX;
mouseData->lastY = mouseData->currentY;
float pitch = mouseParameters->sensitivityY * deltaY;
float yaw = mouseParameters->sensitivityX * deltaX;
glm::quat pitch_Q = glm::quat(glm::vec3(pitch, 0.0f, 0.0f));
glm::quat yaw_Q = glm::quat(glm::vec3(0.0f, yaw, 0.0f));
cameraData->Q = pitch_Q * cameraData->Q * yaw_Q;
cameraData->Q = glm::normalize(cameraData->Q);
glm::mat4 rotation = glm::toMat4(cameraData->Q);
glm::mat4 translation = glm::mat4(1.0f);
translation = glm::translate(translation, -(cameraData->position));
cameraData->viewMatrix = rotation * translation;
cameraData->forward = (cameraData->viewMatrix)[2];
cameraData->up = (cameraData->viewMatrix)[1];
cameraData->right = (cameraData->viewMatrix)[0];
}
或
'X-Seraph-LoginReason': 'AUTHENTICATED_FAILED'
答案 4 :(得分:0)
虽然这不是 OP 的确切答案,但它可以为拥有来自 blank response
的 python-requests
的人解决问题。
由于内容类型错误,我收到了空白响应。我期待的是 HTML 而不是 JSON 或登录成功。对我来说正确的 content-type
是 application/x-www-form-urlencoded
。
基本上我必须执行以下操作才能使我的脚本正常工作。
data = 'arcDate=2021/01/05'
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
}
r = requests.post('https://www.deccanherald.com/getarchive', data=data, headers=headers)
print(r.status_code)
print(r.text)
中了解更多信息