2011-04-04 19 views
7

यहां मेरे कोड का एक स्निपेट है। मैं HTTPOST का उपयोग कर वेबसाइट पर लॉगिन करने की कोशिश कर रहा हूं। मुझे "400 खराब अनुरोध" मिल रहा है मैंने विभिन्न संयोजनों की कोशिश की है। मैंने NameValuePair के बजाय उपयोगकर्ता नाम/पासवर्ड को शीर्षलेख के रूप में पास करने का प्रयास किया। लेकिन एक ही परिणाम। क्या मुझे कुछ याद आ रही है?मुझे एचटीपी/1.1 400 खराब अनुरोध क्यों मिल रहा है?

HttpClient httpclient = new DefaultHttpClient(); 

HttpPost post = new HttpPost("https://identi.ca/main/login"); 


List <NameValuePair> nvps = new ArrayList <NameValuePair>(); 
nvps.add(new BasicNameValuePair("nickname", u)); 
nvps.add(new BasicNameValuePair("password", p)); 
nvps.add(new BasicNameValuePair("submit", "Login")); 

post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); 

HttpResponse response = httpclient.execute(post); 
HttpEntity entity = response.getEntity(); 

Log.i("Login form POST result: ", response.getStatusLine().toString()); 

सहायता के लिए धन्यवाद।

+2

आपको हमें अनुरोध दिखाना होगा। इसे लॉग से प्राप्त करने का प्रयास करें। – Zepplock

उत्तर

7

एक HTTP सेवा 400 प्रतिक्रिया भेजेगी यदि ऐसा लगता है कि आपने एक अवैध/गलत/अनुचित भेजा है। आपके कोड से बताने का कोई तरीका नहीं है, भेजे गए वास्तविक तर्क क्या होंगे, या (अधिक महत्वपूर्ण) सर्वर आपको क्या भेजने की अपेक्षा करता है।

इस निदान के लिए आप की आवश्यकता होगी:

  • पता लगाना क्या अपने कोड वास्तव में भेज रहा है, और
  • पता लगाना क्या सर्वर आप भेजने के लिए उम्मीद कर रही है।

दूसरा शामिल हो सकता है:

  • वेब पेज (रों) एक वेब ब्राउज़र के साथ एक सामान्य उपयोगकर्ता अनुरोध करने के लिए उपयोग करता है पर देख रहे हैं,
  • 400 प्रतिक्रिया के शरीर को देखकर आप सर्वर से प्राप्त कर रहे हैं,
  • सर्वर लॉग देख रहे हैं, और/या
  • सर्वर के वेब एपीआई दस्तावेज़ (या स्रोत कोड) को देख रहे हैं।

इस मामले में, यह लग रहा है नहीं है की तरह एक अतिरिक्त token पैरामीटर की आपूर्ति किए जाने की आवश्यकता है।

हालांकि, मुझे संदेह है कि आप पूरी तरह से गलत दृष्टिकोण ले रहे हैं। "Identi.ca" साइट StatusNet का उपयोग करती है जिसमें क्लाइंट के लिए published APIs है। "लॉगिन" यूआरएल से बात करने का कोई जिक्र नहीं है जिसे मैं देख सकता था।

+0

मैं सहमत हूं "identi.ca" एपीआई प्रकाशित किया है। मैं वेबसाइटों पर नेविगेट करने और HTTP का उपयोग करने पर अपना हाथ कोशिश कर रहा हूं। – chanakya

6

उस लॉगिन पृष्ठ के स्रोत को देखते हुए, token नामक एक छिपी हुई फ़ील्ड है जिसे आपको शायद सर्वर पर वापस जाना है। आपको पहले उस पृष्ठ की सामग्री प्राप्त करने की आवश्यकता होगी, टोकन मान निकालें, और इसे अपनी पोस्ट प्रतिक्रिया में शामिल करें।

+0

धन्यवाद ग्रेग। आपको बताएगा कि यह कैसे जाता है। – chanakya

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