Вызвать удаленную функцию print req.add(1, 3) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вызвать удаленную функцию print req.add(1, 3)

Поиск

import urllib2, base64

 

req = urllib2.Request('http://localhost/mywebdir') b64 = base64.encodestring('user1:secret').strip() req.add_header('Authorization', 'Basic %s' % b64) req.add_header('User-agent', 'Mozilla/5.0')

 

f = urllib2.urlopen(req) print f.read()[:100]

 

Как видно из этого примера,ничего загадочного в авторизации нет: web-клиент вносит(закодированные base64) идентификационные данные в поле Authorization HTTP-запроса.

Примечание:

 

Приведенные два примера почти эквивалентны,только во втором примере прокси-сервер не назначен явно.

 

XML-RPC сервер

 

До сих пор высокоуровневые протоколы рассматривались с точки зрения клиента.Не менее просто создавать наPythonи их серверные части.Для иллюстрации того,как разработать программу наPython,реализующую сервер,был выбран протоколXML-RPC.Несмотря на свое название,конечному пользователю необязательно знатьXML (об этом языке разметки говорилось на одной из предыдущих лекций),так как он скрыт от него.Сокращение RPC(RemoteProcedureCall,вызов удаленной процедуры)объясняет суть дела:с помощьюXML-RPCможно вызывать процедуры на удаленном хосте.Причем при помощиXML-RPCможно абстрагироваться от конкретного языка программирования за счет использования общепринятых типов данных(строки,числа,логические значения и т.п.).В


 


языкеPythonвызов удаленной функции по синтаксису ничем не отличается от вызова обычной функции:

 

import xmlrpclib

 

# Установить соединение

 

req = xmlrpclib.ServerProxy("http://localhost:8000")

 

try:

 

except xmlrpclib.Error, v: print "ERROR",

 

А вот как выглядитXML-RPC-сервер(для того чтобы попробовать пример выше,необходимо сначала запустить сервер):

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 40; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.20 (0.007 с.)