2015-04-09 5 views
1

Я пытаюсь отправить pushbullet уведомления с linefeed/newlines , но он не работает. , когда я добавляю% 0d или \ n, он ничего не делает.Pushbullet pycurl with linefeed в сообщении

в bash я просто добавлю -d в свою команду curl, и это работает. Есть ли аналогичное решение для pycurl?

Заранее благодарен

любые предложения?

import pycurl 


text2 = "line%0dline2" 
postData = '{"type":"note", "title":"Title", "body":"%s"}' %text2.encode("utf-8") 
c = pycurl.Curl() 
c.setopt(pycurl.WRITEFUNCTION, lambda x: None) 
c.setopt(pycurl.URL, 'https://api.pushbullet.com/v2/pushes') 
c.setopt(pycurl.HTTPHEADER, ['Content-Type: application/json']) 
c.setopt(pycurl.USERPWD, "api") 
c.setopt(pycurl.POST, 1) 
c.setopt(pycurl.POSTFIELDS, postData) 
c.perform() 

ответ

3

Я предполагаю, что вы используете что-то вроде:

postData = '{"type":"note", "title":"Title", "body":"line\nline2"}' 

Это означает, что при отправке его на сервер, сервер видит это:

{"type":"note", "title":"Title", "body":"line 
line2"} 

Вы можете см. это:

print(postData) 

JSON s pecifies, что символ новой строки должен быть экранирован, когда он появляется в строке, так что вы действительно хотите отправить это:

{"type":"note", "title":"Title", "body":"line\nline2"} 

Чтобы получить, что в Python, вы должны либо использовать «\\ п» или сырую строку :

postData = '{"type":"note", "title":"Title", "body":"line\\nline2"}' 
Смежные вопросы