2015-02-17 6 views
16

निरस्त किया गया है मैं कुछ रीस्ट आधारित API को एक्सेस करने के लिए Http GET आदेश जारी करने के लिए पायथन अनुरोध मॉड्यूल का उपयोग करने का प्रयास कर रहा हूं। यूआरएल एक RESTClient पर ठीक काम कर रहे हैं, लेकिन जब मैं पाइथन में एक ही यूआरएल का उपयोग करता हूं, तो मुझे कनेक्शन त्रुटि मिलती है।पायथन अनुरोध। Exception.ConnectionError: कनेक्शन "BadStatusLine"

कोड मैं निष्पादित करने के लिए कोशिश कर रहा हूँ है:

payload={"mac":new_mac,"token":token} 
userloginurl="http://192.168.1.40:9119/uid" 
r=requests.get(userloginurl,params=payload) 
print(r.url) 

अगर मैं RESTClient का उपयोग कर इस यूआरएल का परीक्षण, मैं कुछ और क्षेत्रों के साथ-साथ प्रतिक्रिया हेडर में एक 200 ठीक स्थिति कोड मिलता है। enter image description here लेकिन यह पाइथन अनुरोधों के साथ काम नहीं कर रहा है। त्रुटि का ट्रेसबैक नीचे दिखाया गया है:

Traceback (most recent call last): 
File "getAPids.py", line 34, in <module> 
r=requests.get(userloginurl,params=payload) 
    File "C:\Users\garvitab\python\lib\site-packages\requests\api.py", line 65, in 
get 
return request('get', url, **kwargs) 
File "C:\Users\garvitab\python\lib\site-packages\requests\api.py", line 49, in 
request 
response = session.request(method=method, url=url, **kwargs) 
File "C:\Users\garvitab\python\lib\site-packages\requests\sessions.py", line 4 
61, in request 
resp = self.send(prep, **send_kwargs) 
File "C:\Users\garvitab\python\lib\site-packages\requests\sessions.py", line 5 
73, in send 
r = adapter.send(request, **kwargs) 
File "C:\Users\garvitab\python\lib\site-packages\requests\adapters.py", line 4 
15, in send 
raise ConnectionError(err, request=request) 
requests.exceptions.ConnectionError: ('Connection aborted.', BadStatusLine("''", 
)) 

मैंने समस्या का कारण देखा। संभवतः, प्राप्त प्रतिक्रिया सही ढंग से स्वरूपित नहीं है। क्या इस समस्या को संभालने का कोई तरीका है?

अग्रिम धन्यवाद।

उत्तर

18

समस्या यूआरएल के साथ थी। यह कनेक्शन https पर स्थापित किया गया था और मैं पाइथन लिपि में http का उपयोग कर रहा था। इसलिए मुद्दा।

+0

यह काम करता है धन्यवाद – einverne

+1

खुशी है कि मैं मदद कर सकता हूं :) – BajajG

2

क्या आपने वास्तव में जांच की है, तार पर क्या भेजता है? मुझे लगता है कि आपको अपने शब्दकोश को अपने द्वारा JSON स्ट्रिंग में परिवर्तित करना पड़ सकता है, या payload= के बजाय json= कीवर्ड का उपयोग करना पड़ सकता है। विवरण के लिए http://docs.python-requests.org/en/latest/user/quickstart/#custom-headers देखें। यह चाल हो सकता है:

import json 
payload = json.dumps({"mac":new_mac,"token":token}) 
userloginurl = "http://192.168.1.40:9119/uid" 
r = requests.get(userloginurl, data=payload) 
print(r.url) 
+0

पीछे जवाब देने के लिए धन्यवाद। मैंने इस दृष्टिकोण की कोशिश की लेकिन त्रुटि अभी भी बनी हुई है। इस विषय पर अन्य SO प्रश्नों के मुताबिक, यह सर्वर द्वारा उत्पन्न अनुचित रूप से स्वरूपित प्रतिक्रिया या प्रतिक्रिया में उत्पन्न अज्ञात स्थिति कोड की समस्या है। मैं अभी भी त्रुटि के सटीक कारण को समझने की कोशिश कर रहा हूं। – BajajG

+0

अनएन्क्रिप्टेड कनेक्शन पर क्या गलत हो रहा है यह जानने के सबसे तेज़ तरीकों में से एक है कि दोनों अनुरोधों के लिए वायरसहार्क का उपयोग करके अपने ट्रैफिक को आसानी से छीनना और अंतर की तुलना करना। एन्क्रिप्टेड यातायात पर, भेजे गए कच्चे अनुरोधों के डीबग आउटपुट को सक्षम करें। – Michael

+0

सुझाव के लिए धन्यवाद लेकिन वास्तविक समस्या यूआरएल के साथ थी। – BajajG

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