Berman
Berman

Reputation: 143

How to insert parameters into requests.post function properly?

r = requests.post(
    "http://shop.digiseller.ru/xml/shop_categories.asp",
    data={'seller\id': 479531, 'category\id': 0}
)

r.text

the output is: <?xml version="1.0" encoding="utf-8"?><digiseller.response><retval>-1</retval><retdesc>отсутствует или неверно задан параметр seller/id</retdesc></digiseller.response> ( smth like nonexistent or incorrect parameter seller/id )

What is going wrong? In the API docs of digiseller.ru it is said that names of the paramateres must be wriiten in this way: "category\id", "seller\id". I had tried to use slashes '/' instead of backslashes, but it didn't work.

Here is an example of a request in the API:

<digiseller.request>
  <seller>
    <id>479531</id>
  </seller>
  <category>
    <id></id>
  </category>
  <lang></lang>
</digiseller.request>

Upvotes: 0

Views: 238

Answers (1)

Robᵩ
Robᵩ

Reputation: 168586

You should submit your request as an XML request. Try this:

import requests

x = '''<digiseller.request>
  <seller><id>{seller_id}</id></seller>
  <category><id>{category_id}</id></category>
  <lang></lang>
</digiseller.request>'''

r = requests.post(
    "http://shop.digiseller.ru/xml/shop_categories.asp",
    data=x.format(seller_id=7, category_id=0),
    headers={'Content-Type': 'application/xml'})

if r.ok:
    print ('GOOD', r.text)
else:
    print ('BAD', r.text)

Result:

('GOOD', u'<?xml version="1.0" encoding="utf-8"?><digiseller.response><retval>0</retval><retdesc></retdesc><categories></categories></digiseller.response>')

Upvotes: 1

Related Questions