Python - 使用动态值发送列表中每个项目的请求

问题描述 投票:0回答:1

我目前正在使用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开始。让我知道你们的想法。

python loops python-requests
1个回答
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())
© www.soinside.com 2019 - 2024. All rights reserved.