1

pycurl「POST」をRESTインターフェース(この場合はNeo4j)に送信する方法を理解しようとしています。

私はCURLを介してそれを行うことができます:

curl -HContent-Type:application/json -X POST -d '"http://localhost:7474/db/data/node/123"' http://localhost:7474/db/data/index/node/persons/name/peter

...しかし、CURLオプションを使用してそれを変換する方法がわかりません。これは私が得たものに最も近いですが失敗します

data = "http://localhost:7474/db/data/node/123"
headers = {"Content-Type": "application/json"}
url_dir = "http://localhost:7474/db/data/index/node/persons/name/peter"

conn = pycurl.Curl()
c.setopt(pycurl.URL, url_dir)
c.setopt(pycurl.HTTPHEADER, headers)

送信するデータをどうすればよいですか?

編集:データとは、データというタイトルの変数を意味します。pycurlを介してデータ(-dオプションに含まれるもの)を送信するにはどうすればよいですか。私はそれをurlencodeしようとしましたが、エラーが発生します(明らかに、そのタイプのため)。urllib.quote_plus()を試しましたが、RESTサービスで400エラーが発生しました。GETが正常に機能しているため、これが問題であると思われます。

4

1 に答える 1

3

これらのステートメントを追加すると、次のことが役立つ場合があります。

c.setopt(pycurl.POST, 1)
c.setopt(pycurl.POSTFIELDS, data)

詳細については、 libcurlチュートリアルの「HTTPPOST」セクションを確認してください。

注1:data文字列を二重引用符で囲む必要がある場合は、次のようにする必要がありますc.setopt(pycurl.POSTFIELDS, '"%s"' % data)

注2:タイプミスをしたと思います。conn変数は。と呼ばれる必要がありますc

于 2010-12-30T01:41:19.427 に答える