Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 8, 2010 19:41:28

jartasa
От:
Зарегистрирован: 2009-09-20
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

Сокеты

Что я делаю не так ?

# -*- coding: UTF-8 -*-
import socket
req = """
POST /RPC2 HTTP/1.1
Host: ping.blogs.yandex.ru
Content-Type: text/xml
Content-length: 318
<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
<params>
<param>
<value>Лучший подарок — это книга</value>
</param>
<param>
<value>http://clubs.ya.ru/company/rss/posts.xml</value>
</param>
</params>
</methodCall>"""
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('ping.blogs.yandex.ru',80))
sock.send(req)
result = sock.recv(1024)
sock.close()
print result



Офлайн

#2 Фев. 8, 2010 19:44:41

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

Сокеты

какая ошибка? Или хотя бы какая версия питона?



Офлайн

#3 Фев. 8, 2010 20:27:07

jartasa
От:
Зарегистрирован: 2009-09-20
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

Сокеты

Он просто зависает,точнее не зависает,а не заканчивает работу.Видать ждёт ответа от сервера.
py 2.6



Офлайн

#4 Фев. 8, 2010 20:29:34

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Сокеты

убери перенос строки из начала запроса, его не должно быть

Офлайн

#5 Фев. 8, 2010 20:31:37

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Сокеты

и ещё по стандарту между заголовком и телом запроса должна быть пустая строка, и вообще возможно это запрос некоректен
а остальное норм (для малых данных)

Офлайн

#6 Фев. 8, 2010 20:35:22

jartasa
От:
Зарегистрирован: 2009-09-20
Сообщения: 78
Репутация: +  0  -
Профиль   Отправить e-mail  

Сокеты

Получилось,спасибо!

# -*- coding: UTF-8 -*-
import socket
requ = """<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
<params>
<param>
<value>Ds</value>
</param>
<param>
<value>http://zr.ru/rss.xml</value>
</param>
</params>
</methodCall>"""
req = u"""POST /RPC2 HTTP/1.1
Host: ping.blogs.yandex.ru
Content-Type: text/xml
Content-length: %s

%s"""%(len(requ),requ)

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('ping.blogs.yandex.ru',80))
sock.send(req)
result = sock.recv(1024)
sock.close()
print result



Отредактировано (Фев. 8, 2010 20:40:49)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version