MissingSchema - Requests 模块无效 URL 错误
MissingSchema - Invalid URL Error with Requests module
正在尝试使用 GetItem 从 eBay API 获取数据。但是 requests 没有正确读取或获取 URL,有什么想法吗?出现此错误:
requests.exceptions.MissingSchema: Invalid URL '<urllib.request.Request object at 0x00E86210>': No schema supplied. Perhaps you meant http://<urllib.request.Request object at 0x00E86210>?
我发誓我以前可以使用这段代码,但现在不行了,所以我不确定为什么。
我的代码:
from urllib import request as urllib
import requests
url = 'https://api.ebay.com/ws/api.dll'
data = '''<?xml version="1.0" encoding="utf-8"?>
<GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>my-auth-token</eBayAuthToken>
</RequesterCredentials>
<ItemID>any-item-id</ItemID>
</GetItemRequest>'''
headers = {
'Content-Type' : 'text/xml',
'X-EBAY-API-COMPATIBILITY-LEVEL' : 719,
'X-EBAY-API-DEV-NAME' : 'dev-name',
'X-EBAY-API-APP-NAME' : 'app-name',
'X-EBAY-API-CERT-NAME' : 'cert-name',
'X-EBAY-API-SITEID' : 3,
'X-EBAY-API-CALL-NAME' : 'GetItem',
}
req = urllib.Request(url, data, headers)
resp = requests.get(req)
content = resp.read()
print(content)
提前谢谢你。任何关于 urllib 的好书 material 也很棒。
您正在混合使用 urllib 和请求库。它们是不同的库,都可以在 Python 中执行 HTTP 请求。我建议您只使用请求库。
删除行 req = urllib.Request(url, data, headers)
并将 resp = ...
行替换为:
r = requests.post(url, data=data, headers=headers)
像这样打印响应正文:
print(r.text)
在此处查看请求快速入门以获取更多示例:https://2.python-requests.org//en/master/user/quickstart/
正在尝试使用 GetItem 从 eBay API 获取数据。但是 requests 没有正确读取或获取 URL,有什么想法吗?出现此错误:
requests.exceptions.MissingSchema: Invalid URL '<urllib.request.Request object at 0x00E86210>': No schema supplied. Perhaps you meant http://<urllib.request.Request object at 0x00E86210>?
我发誓我以前可以使用这段代码,但现在不行了,所以我不确定为什么。
我的代码:
from urllib import request as urllib
import requests
url = 'https://api.ebay.com/ws/api.dll'
data = '''<?xml version="1.0" encoding="utf-8"?>
<GetItemRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<eBayAuthToken>my-auth-token</eBayAuthToken>
</RequesterCredentials>
<ItemID>any-item-id</ItemID>
</GetItemRequest>'''
headers = {
'Content-Type' : 'text/xml',
'X-EBAY-API-COMPATIBILITY-LEVEL' : 719,
'X-EBAY-API-DEV-NAME' : 'dev-name',
'X-EBAY-API-APP-NAME' : 'app-name',
'X-EBAY-API-CERT-NAME' : 'cert-name',
'X-EBAY-API-SITEID' : 3,
'X-EBAY-API-CALL-NAME' : 'GetItem',
}
req = urllib.Request(url, data, headers)
resp = requests.get(req)
content = resp.read()
print(content)
提前谢谢你。任何关于 urllib 的好书 material 也很棒。
您正在混合使用 urllib 和请求库。它们是不同的库,都可以在 Python 中执行 HTTP 请求。我建议您只使用请求库。
删除行 req = urllib.Request(url, data, headers)
并将 resp = ...
行替换为:
r = requests.post(url, data=data, headers=headers)
像这样打印响应正文:
print(r.text)
在此处查看请求快速入门以获取更多示例:https://2.python-requests.org//en/master/user/quickstart/