Найти - Пользователи
Полная версия: Запрос к Pastebin API
Начало » Network » Запрос к Pastebin API
1
ptranffer
Здравствуйте. Я не сильно разбираюсь в веб-технологиях и вообще в Python, но мне нужно сделать запрос к Pastebin API (http://pastebin.com/api). Там есть пример для PHP, я кое-как пытаюсь переписать под Python.

Вот что получилось:
import urllib.request
api_dev_key = '<my_dev_key>'
api_paste_code = 'code' * 10
api_paste_private = '1'
api_paste_name = 'mypaste.txt'
api_paste_expire_date = '10M'
api_paste_format = 'text'
api_user_key = ''
url = 'http://pastebin.com/api/api_post.php?api_option=paste&api_user_key={}&api_paste_private={}&api_paste_name=  {}&api_paste_expire_date={}&api_paste_format={}&api_dev_key={}&api_paste_code={}'
url = url.format(api_user_key, api_paste_private, api_paste_name, api_paste_expire_date, api_paste_format, api_de    v_key, api_paste_code)
print(url)
response = urllib.request.urlopen(url)
print(response.read())

Запрос происходит, и ответ говорит что “b'Bad API request, invalid api_option'” и я не могу понять почему (возможно я по неопытности что-то упустил).
terabayt
в доке по апи
curl_setopt($ch, CURLOPT_POSTFIELDS, 'api_option=paste&
гугл говорит что CURLOPT_POSTFIELDS это post запрос
а вы передаете get
ZerG
зачем велосипедить?
terabayt
ZerG
зачем велосипедить?
незачем
ptranffer
import http.client
api_dev_key = '<dev_key>'
api_paste_code = 'code' * 10
api_paste_private = '1'
api_paste_name = 'mypaste.txt'
api_paste_expire_date = '10M'
api_paste_format = 'text'
api_user_key = ''
http = http.client.HTTPConnection('pastebin.com:80')
http.connect()
req = 'api_option=paste&api_user_key={}&api_paste_private={}&api_paste_name={}&ap    i_paste_expire_date={}&api_paste_format={}&api_dev_key={}&api_paste_code={}'.form    at(api_user_key, api_paste_private, api_paste_name, api_paste_expire_date, api_pa    ste_format, api_dev_key, api_paste_code)
http.request('POST', '/api/api_post.php', req)
response = http.getresponse()
print(response.read())
http.close()

Попробовал вот так как выше – ответ тот же. Что теперь не так?
terabayt
ptranffer
Что теперь не так?
Не так ваше знание пайтона и умение искать ответы.
В докке по пхп методу написано
Этот параметр может быть передан как в качестве url-закодированной строки, наподобие ‘para1=val1&para2=val2&…’,
в пайтоне такого нету
нужно передавать словарем
ptranffer
terabayt
можно ссылку на пример такой “передачи со словарем”? А то я не знаю как “гуглить”.
terabayt
вот почитайе
там в разделе “Более сложные запросы POST” пример

ptranffer
А то я не знаю как “гуглить”.
гуглить просто
вот только проблема в незнании вебтехнологий
без этого сейчас никуда
советую почитать какую-то книгу на досуге


вот еще что нашел
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB