2

私はPythonを学び、残りのweb_serviceアプリケーションをテストしようとしています。以下のコードから、私がやろうとしていることは、何かを投稿して結果を取得することです。これを起動すると、コンソールから次のように表示されます。

Traceback (most recent call last):
  File "D:\workspaces_branch1\csse120\TestPythonProject\src\UTF-Rest-Client.py", line 9, in <module>
    import restful_lib
ImportError: No module named restful_lib

このrestful_libモジュールがないからだと思います。どこで入手でき、どのようにインストールできますか?また、起動が適切かどうかを知りたいのですが、返されるデータを取得するにはどうすればよいですか?

import argparse

#additional lib, need installation (see README)
import restful_lib

testQueueId = 0

# FUNCTIONS

#generate POST content

def postContent():

        xmlData = "<testQueueRequestByNewnancy>"+ \
        "<nancy>"+ \
        "<nancyTargetId>" + args.nancyTargetID + "</nancyTargetId>"+ \
        "<nancyUrl>" + args.nancyUrl + "</nancyUrl>"+ \
        "<nancyVersion>" + args.nancyVersion + "</nancyVersion>"+ \
        "<projectId>" + args.projectID + "</projectId>"+ \
        "<MumID>" + args.MumID + "</MumID>"+ \
        "</nancy>"+ \
            "<user>"+ \
                "<id>" + args.userID + "</id>"+ \
             "</user>"+ \
         "</testQueueRequestByNewnancy>"   

        printVerbose('xmlData =' + xmlData)
        return xmlData

#this function will print text only if verbose is on

def printVerbose(text):
    if args.verbose:
        print(text)


#this function will instruct scheduler through REST API call to do new tests

def callRestApi(content):
    printVerbose('calling REST scheduler API...')

    #recreate complete URL
    base_url = 'http://localhost:8080/test'
    #ensure http:// is at the beginning
    if (base_url[0:7].lower() != 'http://'):
        base_url = 'http://' + base_url
        printVerbose('url is ' + base_url)
        conn = restful_lib.Connection(base_url, username=args.login, password=args.password)
        headers = {'content-type':'text/json', 'accept':'text/json'}
        conn.request_post("/bynewnancy", args={'q': 'Test'}, headers=headers)
        #conn.request_get("/bynewnancy", args=content, returns=conn.ret, headers={'Accept': 'text/json'})

# MAIN

#definition des variables
if __name__ == '__main__':

    #parse command line arguments
    parser = argparse.ArgumentParser()

    parser.add_argument('-v', dest='verbose', action='store_true')
    parser.add_argument('-bt', '--nancyTargetID', required=True)
    parser.add_argument('-bu', '--nancyUrl', required=True)
    parser.add_argument('-bv', '--nancyVersion', required=False)
    parser.add_argument('-p', '--projectID', required=True)
    parser.add_argument('-s', '--MumID', required=True)
    parser.add_argument('-u', '--userID', required=True)
    #parser.add_argument('-url', '--httpURL', default='127.0.0.1')
    #parser.add_argument('-port', '--httpPort', default='8080')
    #parser.add_argument('-login', '--login', default='admin')
    #parser.add_argument('-pwd', '--password', default='admin')
    #parser.add_argument('-o', '--outputDir', default='.')

    #args is considered as a global variable
    args = parser.parse_args()


    postContent = postContent()
    callRestApi(postContent)

    print('----==============================---- ')
4

3 に答える 3

9

これrestful_libhttp://code.google.com/p/python-rest-clientからのものですが、最後の変更は4年前なので、このパッケージの使用はお勧めしません。

requestsそのようなタスクにはライブラリを強くお勧めします。XMLデータを含むPOSTリクエストは、次のようになります。

requests.post(url, data=my_xml_string)
于 2012-06-15T11:32:13.080 に答える
0

コードから、「#additional lib、インストールが必要です(READMEを参照)」という行があります。READMEファイルを見て、「追加のライブラリ」をインストールする方法を理解したほうがいいと思います。

于 2012-06-15T04:31:22.497 に答える
0

リクエストを行うためにPython標準ライブラリのurllibとurllib2を使用できると思います。エンコードまたはデコードを送受信する場合は、適切なエンコーダー、デコーダー、またはパーサー(lxml、BeautifulSoup、json、simplejsonなど)を使用する必要があります。データ形式と好み。始めるには、Pythonのドキュメントからインターネットリソースを取得する方法が役立つと思います。また、Python標準ライブラリのドキュメントからurllibとurllib2のより詳細なドキュメントを確認できます。

于 2012-06-15T04:36:49.043 に答える