0

私は現在、RESTful Web サービスがインストールされているデータベース Web サイトとのインターフェースを自動化する方法に取り組んでいます。Python を使用して、次のサイトにリストされている要求を適切に送信する方法の適切な形式を理解するのに問題があります。 https://neesws.neeshub.org:9443/nees.html

特定の例はこれです:

POST https://neesws.neeshub.org:9443/REST/Project/731/Experiment/1706/Organization

<Organization id="167"/>

最大の問題は、上記の XML 形式の部分をどこに置くべきかわからないことです。上記をpython HTTPSリクエストとして送信したいのですが、これまでのところ、次の構造の何かを試してきました。

>>>import httplib
>>>conn = httplib.HTTPSConnection("neesws.neeshub.org:9443")
>>>conn.request("POST", "/REST/Project/731/Experiment/1706/Organization")
>>>conn.send('<Organization id="167"/>')

しかし、これは完全に間違っているようです。Web サービス インターフェイスに関しては、実際に python を実行したことがないので、主な質問は、httplib を使用して POST 要求、特に XML 形式の部分を送信する方法を正確に指定する方法です。どんな助けでも大歓迎です。

4

1 に答える 1

0

データを送信する前に、いくつかのリクエスト ヘッダーを設定する必要があります。たとえば、content-type を「text/xml」にします。いくつかの例をチェックアウトし、

Post-XML-Python-1

例としてこのコードがあります:

import sys, httplib

HOST = www.example.com
API_URL = /your/api/url

def do_request(xml_location):
"""HTTP XML Post requeste"""
request = open(xml_location,"r").read()
webservice = httplib.HTTP(HOST)
webservice.putrequest("POST", API_URL)
webservice.putheader("Host", HOST)
webservice.putheader("User-Agent","Python post")
webservice.putheader("Content-type", "text/xml; charset=\"UTF-8\"")
webservice.putheader("Content-length", "%d" % len(request))
webservice.endheaders()
webservice.send(request)
statuscode, statusmessage, header = webservice.getreply()
result = webservice.getfile().read()
    print statuscode, statusmessage, header
    print result

do_request("myfile.xml")

Post-XML-Python-2

あなたはいくつかのアイデアを得るかもしれません。

于 2012-07-30T04:34:20.223 に答える