0

私はpython mechanize libを使用しており、いくつかのURLでhttp PUTメソッドを使用しようとしていますが、これに対するオプションが見つかりません。GET メソッドと POST メソッドしか表示されません...

PUT メソッドが機能しない場合、誰かがこれを行うためのより良いライブラリを教えてくれるでしょうか?

4

3 に答える 3

1

考えられる解決策の 1 つ:

class PutRequest(mechanize.Request):
  "Extend the mechanize Request class to allow a http PUT"
  def get_method(self):
    return "PUT"

次に、次のようなリクエストを行うときにこれを使用できます。

browser.open(PutRequest(url,data=your_encoded_params,headers=your_headers))

注: mechanize コード パッケージを掘り下げて、mechanize が HTTP メソッドを設定している場所を見つけることで、この解決策にたどり着きました。mechanize.Requestを呼び出すときに、Request クラスを使用し、その中で Request クラスを_request.py拡張していることに気付きました_urllib2_fork.py。http メソッドは、実際にget_methodは の Request クラスのに設定されてい_urllib2_fork.pyます。GET および POST メソッドのみを許可していたことが判明get_methodしました。_urllib2_fork.pyこの制限を乗り越えるために、mechanize を拡張する独自の put および delete クラスを作成することになりました。リクエストはオーバーロードget_method()のみ。

于 2014-05-01T08:41:59.417 に答える
0

使用リクエスト:

>>> import requests
>>> result = requests.put("http://httpbin.org/put", data='hello')
>>> result.text

ドキュメントごと:

requests.put(url, data=None, **kwargs)
Sends a PUT request. Returns Response object.

Parameters: 
url – URL for the new Request object.
data – (optional) Dictionary or bytes to send in the body of the Request.
**kwargs – Optional arguments that request takes.
于 2012-12-10T22:42:40.630 に答える
0

機械化経由:

import mechanize
import json

class PutRequest(mechanize.Request):
  def get_method(self):
    return 'PUT'

browser = mechanize.Browser()
browser.open(
    PutRequest('http://example.com/',
    data=json.dumps({'locale': 'en'}),
    headers={'Content-Type': 'application/json'}))

http://qxf2.com/blog/python-mechanize-the-missing-manual/ (おそらく時代遅れ)も参照してください。

Key Zhuが言ったように、リクエストはより良い方法でそれを行います。

于 2016-01-08T14:25:12.157 に答える