我目前正在与UPS Package Tracking API一起使用,以通过POST请求发送跟踪号,该API接收并发送回有关包裹信息的JSON响应。
当前,我只是使用几个嵌套的字典来处理单个跟踪号值的实际请求,但似乎无法弄清楚如何使它每次发送具有不同跟踪号的请求。
以下代码:
trk = ["tracknbr1", "tracknbr2", "tracknbr3"]
data = {"UPSSecurity" : {
"UsernameToken" : {
"Username" : nme,
"Password" : pwd
},
"ServiceAccessToken" : {
"AccessLicenseNumber" : aln
},
},
"TrackRequest" : {
"Request" : {
"RequestOption" : 1,
"TransactionReference" : {
"CustomerContext" : ""
},
},
"InquiryNumber" : trk
}
}
req = requests.post("https://wwwcie.ups.com/rest/Track", json=data)
print (req.text)
“ 查询编号”是跟踪编号存储在请求中的位置。
(很抱歉,如果显示的大部分代码对于该问题都是不必要的,以为这会使我的问题更容易理解。)
所以,现在它只发送对列表中第一项的请求,然后打印出响应。
我正在尝试找到一种方法,使请求遍历列表中的每个项目,每次发送带有下一个跟踪号的请求。
我用for
循环尝试了几种不同的方法,但是我无法让它遍历列表中每个请求的实际值。
可能没有一个明显的解决方案,因为我或多或少只是从Python开始的。让我知道你们的想法。
答案 0 :(得分:0)
在示例中,您正在将trk
变量用于其他用途(分别用于list
和单个InquiryNumber
)。
import requests
nme = 'your_username'
pwd = 'your_password'
aln = 'your_accesslicensenumber'
tracking_numbers = ["tracknbr1", "tracknbr2", "tracknbr3"]
for trk in tracking_numbers:
data = {"UPSSecurity" : {
"UsernameToken" : {
"Username" : nme,
"Password" : pwd
},
"ServiceAccessToken" : {
"AccessLicenseNumber" : aln
},
},
"TrackRequest" : {
"Request" : {
"RequestOption" : 1,
"TransactionReference" : {
"CustomerContext" : ""
},
},
"InquiryNumber" : trk
}
}
response = requests.post("https://wwwcie.ups.com/rest/Track", json=data)
print(response.json())