2010-05-13 59 views
2

我有一個簡單的html服務,在django開發。 你輸入你的名字 - 它發佈這個,並返回一個值(男/女)。通過http網絡服務的簡單XML

我需要將此作爲Web服務。我不知道從哪裏開始。

我想接受一個XML請求,並提供一個XML響應 - 這就是它。

任何人都可以給任何指針 - 谷歌搜索很難,當你不知道你在尋找什麼。

+0

在「SOAP」上搜索。 – 2010-05-13 10:35:52

回答

1

請參閱django書中的Generating non-HTML content以獲取說明。

基本上,它是如此簡單:

def get_data(request, xml_data): 
    data = parse_xml_data(xml_data) 
    return_data = create_xml_blob(data) 
    return HttpResponse(return_data, mimetype='application/xml') 

編輯:

您可以發送xml_data設置爲XML字符串後,也可以發送一個XML請求。

下面是XML數據發送到Web服務,改編自this site一些代碼:

xml_data = """<?xml version="1.0" encoding="UTF-8"?> 
<root>my data here</root> 
""" 

#construct and send the header 

webservice = httplib.HTTP("example.com") 
webservice.putrequest("POST", "/rcx-ws/rcx") 
webservice.putheader("Host", "example.com") 
webservice.putheader("User-Agent", "Python post") 
webservice.putheader("Content-type", "text/xml; charset=\"UTF-8\"") 
webservice.putheader("Content-length", "%d" % len(xml_data)) 
webservice.endheaders() 
webservice.send(xml_data) 

從Django中,你會使用request.raw_post_data直接在XML來獲得。

+0

我不擔心生成非html內容。接受一個XML請求是我想要做的。 – Mark 2010-05-13 11:24:43

+0

發送一個帖子,將變量xml_data設置爲你的xml數據。以utf-8編碼。 – 2010-05-13 12:39:11

2

您可能想要Piston,這是用於將Django應用程序公開爲Web服務的框架。

+0

是啊,絕對+1活塞 – 2010-05-13 12:59:25