2015-06-04 3 views
0

я работаю на Pushbullet проекта Python простой командной строки, и имеют следующий код:400 (Bad Request) ошибка при использовании Pushbullet эфемеры

from settings import * 
import urllib 
import urllib2 


def pushSms(number, message): 
    url = 'https://api.pushbullet.com/v2/ephemerals' 
    values = { 
     "type": "push", 
     "push": { 
      "type": "messaging_extension_reply", 
      "package_name": "com.pushbullet.android", 
      "source_user_iden": settings["PUSHBULLET_USER_IDEN"], 
      "target_device_iden": settings["PUSHBULLET_SMS_IDEN"], 
      "conversation_iden": number, 
      "message": message 
     } 
    } 

    headers = {"Authorization" : "Bearer " + settings["PUSHBULLET_API_KEY"]} 

    data = urllib.urlencode(values) 
    req = urllib2.Request(url, data, headers) 
    response = urllib2.urlopen(req) 
    return response 

Пример использования может быть pushSms("555 555 5555", "Hi there!").

Это позволяет использовать доступ к SMS-сообщениям для приложения Android в Pushbullet, как описано в документе here. Я проверил свои переменные settings и все они действительны (на самом деле они в настоящее время используются в версии JavaScript почти такого точного кода в another project of mine.

Мое подозрение, что это базовый синтаксис Python/urllib2 неправильное использование или ошибка, но я долго смотрел/Googling и не видел свою ошибку. Мысли?

ответ

1

Я не могу сказать наверняка (ответ с сервера может содержать больше информации), а потому мы принимаем как запрошенные формой, так и json запросы, вам, вероятно, нужно будет установить заголовок «Content-Type: application/json» по запросу.

Если это не так, можете ли вы отправить тело 400 ответ?

+0

Подтверждено, что добавление заголовка содержимого разрешало эту проблему. Для этого использование библиотеки 'запросов' оказалось намного проще, чем urllib ... – j6m8