2

Webサービスに接続し、json文字列にデータを提供し、応答を受信するアプリケーションを開発しています。次のコードを使用して、jsonをビルドし、投稿しようとしています。

def connectToService(request):
    data='foxp3 factor'
    l=[] 
    l.append(data)
    l.append(80)
    l.append(5)
    data=json.dumps({"findCitations":l})
    result = urllib2.urlopen('http://www.example.com/webservice', urllib.urlencode(data))

しかし、それは機能しません。Webサービスからのjson応答が結果に保存されることを願っています。それから、おそらくそれをdeseriazizeすることによって、それを解析する方法を見つけます。それについては多くの文献(json、simplejson、HttpPequest)があり、かなり単純でなければなりませんが、私はまだそれを行うことができていません。解決策はありますか?

4

2 に答える 2

3

requests ライブラリを使用していない理由

お気に入り

payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.post("http://www.example.com/webservice", data=payload)
>>> print r.text

ペイロードは、渡すパラメーターです。

これがあなたにアイデアを与えることを願っています

于 2013-01-11T11:21:52.160 に答える
1

このコードといくつかのエラー処理のアイデアを使用できます。

    payload = {'key1': 'value1', 'key2': 'value2'}
    url = "http://www.example.com/webservice"

    try:
        response = requests.post(url, data=payload)

    except requests.exceptions.ConnectionError:
        message = 'This is not the domain we are looking for. URL is: %s' % url
        print e
        sys.exit(1)

    except requests.exceptions.ConnectTimeout:
        message = 'Too slow connection! URL is: %s' % url
        print e
        sys.exit(1)

    except Exception as e:
        message = 'Unknown Error: %(message)s URL is: %(url)s' % {'message': str(e), 'url': url}
        print e
        sys.exit(1)

    else:
        return response.json()
于 2016-02-22T18:57:06.447 に答える