我目前正在使用UPS Package Tracking API通过API接收的POST请求发送跟踪号,并发送回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)
“InquiryNumber”是跟踪号存储在请求中的位置。
(如果显示的大部分代码对问题没有必要,请道歉,认为这会使我的问题更容易理解。)
所以,现在它只发送列表中第一个项目的请求,然后打印出响应。
我试图找出一种方法让请求循环遍历列表中的每个项目,每次发送带有下一个跟踪号的请求。
我用for
循环尝试了几种不同的方法,但我不能让它迭代列表中的每个请求的实际值。
可能有一个我没有看到的明显解决方案,因为我或多或少只是从Python开始。让我知道你们的想法。
在你的例子中,你正在重用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())