Как отправить вложенные параметры запроса, используя запросы Python - PullRequest
0 голосов
/ 03 июля 2019

Я изо всех сил пытаюсь сделать правильный POST, используя python requests. Я анализирую сайт, используя mitmproxy, а отправляемые параметры перечислены как

_cmc.workload: {
 "Requests": [
   {
     "Service": "CourseOfSalesGet1",
     "TId": 11,
     "Request": {
       "Page": 1,
       "Stock": "BHP"
     },
     "DeferExecution": false,
     "SkipCache": false
   },
   {
     "Service": "QuoteGet1",
     "TId": 12,
     "Request": {
       "Stock": "BHP"
     },
     "DeferExecution": false,
     "SkipCache": false
   }
 ]
}

Я преобразовал это в:

params={
'_cmc.workload': {"Requests":[{"Service":"CourseOfSalesGet1","TId":"11","Request":{"Page":"1","Stock":"BHP"},"DeferExecution":"false","SkipCache":"false"},{"Service":"QuoteGet1","TId":"12","Request":{"Stock":"BHP"},"DeferExecution":"false","SkipCache":"false"}]}
}

Заголовки из mitmproxy:

content-type: application/x-www-form-urlencoded; charset=UTF-8 accept: application/json, text/javascript, */*; q=0.01 x-requested-with: XMLHttpRequest accept-language: en-au accept-encoding: br, gzip, deflate

Я конвертировал заголовки в это:

headers={
'content-type':'application/x-www-form-urlencoded',
'accept':'application/json, text/javascript, */*',
'x-requested-with':'XMLHttpRequest',
'accept-language':'en-au',
'accept-encoding':'br, gzip, deflate'
}

и мой POST был в форме

requests.session.post('https://www.example.com', headers=headers,data=params)

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

Пост работает нормально, хотя при воспроизведении на mitmproxy. Как я могу получить, чтобы это было отправлено правильно?

1 Ответ

0 голосов
/ 04 июля 2019

Хорошо, все получилось, просто добавив кавычки во внутренний словарь, как показано:

params={
'_cmc.workload': '{"Requests":[{"Service":"CourseOfSalesGet1","TId":"11","Request":{"Page":"1","Stock":"BHP"},"DeferExecution":"false","SkipCache":"false"},{"Service":"QuoteGet1","TId":"12","Request":{"Stock":"BHP"},"DeferExecution":"false","SkipCache":"false"}]}'
}
...