Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 30, 2016 15:15:51

ptranffer
Зарегистрирован: 2016-06-30
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос к Pastebin API

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

Отредактировано ptranffer (Июнь 30, 2016 15:16:20)

Офлайн

#2 Июнь 30, 2016 15:35:55

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2584
Репутация: +  60  -
Профиль   Отправить e-mail  

Запрос к Pastebin API

https://github.com/six519/PastebinPython

https://pypi.python.org/pypi/Pastebin/1.0.3



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Онлайн

#3 Июнь 30, 2016 15:47:56

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Запрос к Pastebin API

в доке по апи

curl_setopt($ch, CURLOPT_POSTFIELDS, 'api_option=paste&
гугл говорит что CURLOPT_POSTFIELDS это post запрос
а вы передаете get



————————————————
-*- Simple is better than complex -*-

Офлайн

#4 Июнь 30, 2016 15:50:21

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2584
Репутация: +  60  -
Профиль   Отправить e-mail  

Запрос к Pastebin API

зачем велосипедить?



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Онлайн

#5 Июнь 30, 2016 15:58:31

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Запрос к Pastebin API

ZerG
зачем велосипедить?
незачем



————————————————
-*- Simple is better than complex -*-

Офлайн

#6 Июнь 30, 2016 20:34:59

ptranffer
Зарегистрирован: 2016-06-30
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос к Pastebin API

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()

Попробовал вот так как выше – ответ тот же. Что теперь не так?

Отредактировано ptranffer (Июль 1, 2016 02:15:16)

Офлайн

#7 Июнь 30, 2016 23:26:37

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Запрос к Pastebin API

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



————————————————
-*- Simple is better than complex -*-

Офлайн

#8 Июль 1, 2016 02:19:12

ptranffer
Зарегистрирован: 2016-06-30
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос к Pastebin API

terabayt
можно ссылку на пример такой “передачи со словарем”? А то я не знаю как “гуглить”.

Офлайн

#9 Июль 1, 2016 07:49:54

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Запрос к Pastebin API

вот почитайе
там в разделе “Более сложные запросы POST” пример

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


вот еще что нашел



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Июль 1, 2016 07:57:42)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version