2

我正在尝试创建一个脚本来通过 DHL API 从我们公司获取所有订单的所有跟踪详细信息。

我尝试执行以下脚本以连接到 DHL API。

import requests
import json
import http.client

# Replace with the correct URL
url = "https://api-eu.dhl.com/track/shipments?trackingNumber=*************&requesterCountryCode=DE&originCountryCode=DE&language=en"
headers = {
'Accept': 'application/json',
'DHL-API-Key': '*********'
        }
#connection = http.client.HTTPSConnection("https://api-eu.dhl.com")

myResponse = requests.get(url, headers)

if(myResponse.ok):
 to fetch binary content
    jData = json.loads(myResponse.content)

    print("The response contains {0} properties".format(len(jData)))
    print("\n")
    for key in jData:
        print (key + " : " + jData[key])
else:
  with description
    myResponse.raise_for_status()

但它显示以下错误,

Traceback (most recent call last):
  File "/Users/sand/Documents/DHL Python.py", line 28, in <module>
    myResponse.raise_for_status()
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/requests/models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api-eu.dhl.com/track/shipments?trackingNumber=***************&requesterCountryCode=DE&originCountryCode=DE&language=en

所以我想澄清一下,

将它连接到 DHL 跟踪 API 我们需要做哪些事情?

我在 DHL 开发门户创建了一个帐户并填写了详细信息,对于选择 API 部分,我只能选择 2,当我选择其他 API 时,它显示为“Ïn Progress”,所以我删除了它。

我得到了“消费者密钥”和“消费者秘密”,我可以从哪里获得令牌,或者这足以连接 API?

除此之外,我还需要做任何其他设置,因为我是新手,所以任何建议都会有很大帮助。

在此处输入图像描述

在此处输入图像描述 单击隐藏消费者密钥的星号下方的显示链接。消费者密钥 == 'DHL-API-Key' 出现。


在此处输入图像描述

4

1 回答 1

2

问题:从 DHL 获取跟踪详细信息 - 我是否需要进行任何其他设置


从 python-requests.org 快速入门:

使用requests而不是http.client来自给定的DHL -您必须执行的简单 Python 代码示例:

import requests
url = "https://api-eu.dhl.com/track/shipments"

headers = {
    'Accept': 'application/json',
    'DHL-API-Key': 'ApiKeyHere'
    }
payload = {
    'trackingNumber': '7777777770',
    'service': 'express'
}

# This url is for testing 
url = 'https://httpbin.org/get'
resp = requests.get(url, params=payload, headers=headers)

print(resp.content)

输出resp.content

{
  "args": {
    "service": "express", 
    "trackingNumber": "7777777770"
  }, 
  "headers": {
    "Accept": "application/json", 
    "Accept-Encoding": "gzip, deflate", 
    "Dhl-Api-Key": "ApiKeyHere", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.22.0"
  }, 
  "origin": "54.224.8.86, 54.224.8.86", 
  "url": "https://httpbin.org/get?trackingNumber=7777777770&service=express"
}

使用 Python 3.6 测试 - python-requests/2.22.0

于 2019-08-21T11:16:12.530 回答