2011-07-28 27 views
14

क्या Python में पैच http विधि का उपयोग कर अनुरोध करने का कोई तरीका है?मैं पायथन में पैच अनुरोध कैसे करूं?

मैंने प्रेजेंटप्लिब का उपयोग करने की कोशिश की, लेकिन यह विधि पैराम के रूप में पैच को स्वीकार नहीं करता है।

+5

क्या आपका मतलब पुट था? PUSH HTTP – dave

+0

के लिए एक वैध अनुरोध विधि नहीं है [यहां] जांचें (http://stackoverflow.com/questions/111945/is-there-any-way-to-do-http-put-in-python), यह उपयोग करता है उस पोस्ट पर रखो, मुझे लगता है कि आप पुश को एक क्रिया के रूप में उपयोग कर सकते हैं और आपको परेशानी नहीं दे सकते हैं, फिर भी आपको PUSH – Hassek

+0

के बजाय PUT का उपयोग करना चाहिए क्षमा करें, लोग, मैंने गलत विधि नाम टाइप किया है, मैंने सवाल ओओ –

उत्तर

4

मैं अजगर 3 में इस की कोशिश की, और यह काम करने के लिए लग रहा था (लेकिन मैं एक सर्वर काम है कि PATCH अनुरोध प्रकार का समर्थन करता है की जरूरत नहीं है):

>>> import http.client 
>>> c = http.client.HTTPConnection("www.google.com") 
>>> r = c.request("PATCH", "/index.html") 
>>> print(r.status, r.reason) 
405 Method Not Allowed 

मैं यह सोचते हैं रहा है कि HTTP 405 आ रहा है सर्वर से और यह "अनुमति नहीं है"।

वैसे, मुझे HTTP में ठंडा PATCH method दिखाने के लिए धन्यवाद।

+0

उत्तर के लिए धन्यवाद, मैं बाद में कोशिश करूँगा और स्वीकार किए जाने के रूप में चिह्नित करूंगा। गिटहब एपीआई ने पैच के बजाय POST स्वीकार किया, लेकिन मैं इसे आज़मा दूंगा और इसे भविष्य के लिए रखूंगा। –

21
Requests साथ

, PATCH requests बनाने बहुत सरल है:

import requests 

r = requests.patch('http://httpbin.org/patch') 
+1

मैं 'r' कैसे लॉग करूं? क्या मुझे बस 'self.log.info' करना चाहिए ('प्रतिक्रिया:% s'% r) '? – Hussain

+0

मैं इसमें स्ट्रिंग जेसन डेटा कैसे पास कर सकता हूं? –

+1

@ प्रसादथनेलेलैंडन यहां बेहतर जवाब हैं [पायथन अनुरोधों का उपयोग कर JSON पोस्ट करें] (http://stackoverflow.com/questions/9733638/post-json-using-python-requests#26344315) –

12

2.7.1 में काम करने के साथ ही लगता है।

>>> import urllib2 
>>> request = urllib2.Request('http://google.com') 
>>> request.get_method = lambda: 'PATCH' 
>>> resp = urllib2.urlopen(request) 
Traceback (most recent call last): 
... 
urllib2.HTTPError: HTTP Error 405: Method Not Allowed 
+1

ग्रेट जानकारी। POST के बजाय urllib2 पैच का उपयोग करने के लिए यह एक साधारण छोटा हैक है। मुझे नहीं पता कि क्यों पैच को अभी तक एक विकल्प के रूप में लागू नहीं किया गया है। –

2

यह httplib2 साथ अविश्वसनीय रूप से आसान है:

import httplib2 

http = httplib2.Http() 
http.request("http://www.google.com", "PATCH", <patch content>) 

मैं एक पेशेवर बाकी रूपरेखा है कि PATCH समर्थन भी शामिल है में httplib2 पुस्तकालय का उपयोग किया है अपने आप को। यह पायथन 2.3 या बाद में (3.x सहित) का समर्थन करता है और खूबसूरती से काम करता है!

संबंधित मुद्दे