HTTP 메서드 (GET
, POST
등)를 설정하기 위해 Zope 2.10.9의 ZPublisher.Client .call
을 method
인수와 함께 호출 해 보았습니다.하지만 예상대로 작동하지 않습니다. 항상 POST 요청을 보냅니다. 내가 method
인수를 제공하지 않으면 항상 GET 요청을 보냅니다.ZPublisher.Client.call로 HTTP 메서드를 설정하는 방법은 무엇입니까?
응용 프로그램 코드 : 나는 Client.py에 조금을 추적 한
Client.call(
'http://...',
username = 'jdoe',
password = 'mypw',
method = 'GET')
: OK
def call(url,username=None, password=None, **kw):
return apply(Function(url,username=username, password=password),(), kw)
, 그래서 kw = { 'method': 'GET' }
. 지금까지 내가 말할 수있는이
Function.__init__(
'http://...',
username = 'jdoe',
password = 'mypw'
).__call__(
method = 'GET')
Function.__init__
로 변환 인수의 일환으로 method
을 기대하지만이 전달되지 것 :
def __init__(self,url,
arguments=(),method=None,username=None,password=None,
timeout=None,
**headers):
...
if method is not None: self.method=method
Function.__call__
이미 설정할 수 method
을 기대 :
def __call__(self,*args,**kw):
method=self.method
call
의 서명과 apply
전화 __init__
에 맞게 수정해야합니까, 아니면 내가 오해하고 있습니까? 이 오류가 정말 있다면, 여기에 제안 된 패치 (나 ™ 작동)입니다 :
--- Client.py.orig
+++ Client.py
@@ -271,9 +271,9 @@
return f
-def call(url,username=None, password=None, **kw):
+def call(url, arguments=(), method=None, username=None, password=None, timeout=None, **kw):
- return apply(Function(url,username=username, password=password),(), kw)
+ return apply(Function(url, arguments=arguments, method=method, username=username, password=password, timeout=timeout),(), kw)
##############################################################################
# Implementation details below here
+1 OP에서 언급 한대로 버그 보고서를 만들었습니다. – l0b0