Python - отправить запрос для каждого элемента в списке с динамическими значениями - PullRequest
0 голосов
/ 09 сентября 2018

В настоящее время я работаю с API отслеживания пакетов UPS для отправки номера отслеживания через запрос 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)

" InquiryNumber " - это номер отслеживания, сохраненный в запросе.

(Приносим извинения, если большая часть приведенного кода не нужна для проблемы, хотя это облегчит мою проблему.)

Итак, сейчас он только отправляет запрос на первый элемент в списке, а затем распечатывает ответ.

Я пытаюсь найти способ, чтобы цикл обработки запросов проходил по каждому элементу в списке, каждый раз отправляя запрос со следующим номером отслеживания.

Я пробовал несколько различных методов с циклами for, но я не могу заставить его перебирать фактические значения в списке для каждого запроса.

Там может быть очевидное решение, которого я не вижу, так как я более или менее только начинаю с Python. Дайте мне знать, что вы, ребята, думаете.

1 Ответ

0 голосов
/ 09 сентября 2018

Вы повторно используете переменную 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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...