2011-05-24 8 views
12

मैं HttpClient का उपयोग कर एक अजीब समस्या में चल रहा हूं। मैं HttpPost के साथ एक DefaultHttpClient() का उपयोग कर रहा हूँ। मैं 100% सफलता के साथ एचटीपीजीट का उपयोग कर रहा था लेकिन अब मैं आरईटीटी एपीआई के रूप में एचटीपीपोस्ट पर स्विच करने की कोशिश कर रहा हूं जिसका उपयोग मैं जीईटी के बजाय पोस्ट पैरामीटर चाहता हूं। (केवल कुछ एपीआई कॉल के लिए हालांकि मुझे पता है कि जीईटी कॉल ठीक काम कर रहे थे इसलिए यह एपीआई की गलती नहीं है)।एंड्रॉइड पर डिफ़ॉल्ट एचटीपी क्लाइंट के साथ HttpPost का उपयोग करते समय प्रमाणीकरण त्रुटि

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 

    postMethod = new HttpPost("http://www.examplewebsite.com"); 

    nameValuePairs.add(new BasicNameValuePair("var", "lol")); 

    try { 
     postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     response = httpClient.execute(postMethod, responseHandler); 
     Log.i("RESTMethod", response); 
... 

समस्या है:

इसके अलावा, मैं एक साधारण PHP स्क्रिप्ट मैंने लिखा है कि एक पोस्ट पैरामीटर 'var' के लिए लग रहा है और यह गूँज स्क्रीन करने के लिए, इस पैरामीटर प्रदान करने के रूप में इस प्रकार ठीक काम किया पर HttpPost उपयोग करने की कोशिश कि जब मैं करने की कोशिश की और एपीआई को एक ही कॉल कर (लेकिन पैरामीटर वाला एपीआई पैरामीटर के लिए स्पष्ट रूप से परिवर्तित) मैं निम्नलिखित त्रुटि मिलती है:

Authentication error: Unable to respond to any of these challenges: {} 

पेज मैं विनती करता हूँ एक HTTPS पेज है, यह हो सकता है समस्या?

लेकिन एपीआई पर कच्चे HTTP पृष्ठ पर उसी प्रकार का POST अनुरोध करने से वही त्रुटि मिलती है, जब तक कि मैं स्ट्रिंगइन्टिटी भाग को टिप्पणी नहीं करता और फिर यह चलता है (लेकिन xml देता है और मैं अनुरोध करने के लिए पैरामीटर पास करना चाहता हूं जेएसओएन में डेटा)।

यह वास्तव में एक अजीब समस्या (गैर-https भाग) जैसा प्रतीत होता है लेकिन वास्तव में इस समस्या पर कोई मदद नहीं मिल सका, इसलिए अगर जवाब वहां है तो क्षमा करें।

कोई विचार?

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

Infinitifzz

संपादित करें: ठीक है मैं कहीं नहीं हो रही है इसलिए मैंने सोचा कि अगर मैं आप एपीआई यह कुछ प्रकाश डाला सकता है करने के लिए निर्देशित, यह 8Tracks API है और आप आप देख सकते हैं के रूप में सभी अनुरोधों के लिए एक देव कुंजी (api_key) और मैं भाग रहा पर साथ में एक उपयोगकर्ता लॉग इन करने https का उपयोग कर रहा है अटक कर रहा हूँ पारित करने के लिए की जरूरत है:। http://www.8tracks.com/sessions.xml "भाग

आशा इस किसी भी तरह मदद करता है, क्योंकि मैं एक मरे हुए अंत में कर रहा हूँ

धन्यवाद,

Infinitifizz

+0

अपने URL https के साथ शुरू नहीं करना चाहिए तय एक शुरुआत के लिए। फिर, यदि यह https है, तो यह संभवतः एक प्रमाणपत्र या कुछ अन्य प्रमाणीकरण चुनौती से सुरक्षित होगा - जैसा कि त्रुटि संदेश में दर्शाया गया है। –

+0

मैंने बस उस यूआरएल को एक उदाहरण के रूप में रखा है, लेकिन हाँ इसे चाहिए। लेकिन जैसा कि मैंने कहा था कि मैंने अपनी खुद की लिपि को एचटीपीपोस्ट करने की कोशिश की जो ठीक था और अगर मैंने एपीआई के एक गैर-https हिस्से को एचटीपीपोस्ट करने की कोशिश की, जैसे कि http पृष्ठ पर http ™ को नहीं कहा गया था, तो मुझे केवल त्रुटि मिली अगर मैंने नाम हटा दिया , अगर मुझे नहीं मिला तो मुझे प्रमाणीकरण त्रुटि नहीं मिली। –

+0

क्या आप हमें अपना एचटीपी क्लाइंट कन्स्ट्रक्टर दिखा सकते हैं? – Ryan

उत्तर

3

आप बंदरगाह और प्रोटोकॉल घोषित करने के लिए नहीं है? मैं बस इस कोड को घुमा रहा हूं इसलिए कृपया परेशान न हों अगर यह तुरंत ढंग से संकलित नहीं करता है। साथ ही, मैं आमतौर पर अपने सेट क्रेडेंशियल() में एक उपयोगकर्ता नाम पासवर्ड शब्दकोष प्रदान करता हूं लेकिन मुझे लगता है कि यह वही है।

HttpHost host = new HttpHost("www.foo.com", 443, "https"); 

// assemble your GET or POST 

client.getCredentialsProvider().setCredentials(new AuthScope(host.getHostName(), host.getPort())); 

HttpResponse response = client.execute(host, [HttpPost or HttpGet]); 

setCredentials here के बारे में अधिक जानकारी।

+0

हम्म ठीक है, मुझे जाना होगा, मैं मुख्य रूप से परेशान हूं क्योंकि एचटीपीजीट का उपयोग करके यह ठीक काम करता है (गैर-https सामान) और फिर अचानक जब मैं एचटीपीपोस्ट का उपयोग करता हूं तो यह प्रमाणीकरण के बारे में बात कर रहा है। धन्यवाद, हालांकि मैं इसे आज़मा दूंगा। –

+0

कूल, मुझे बताएं। – Ryan

+0

हम्म जो काम करने के लिए प्रतीत नहीं होता है लेकिन कोशिश करने के लिए धन्यवाद। मुझे लगता है कि मैं एपीआई लेखकों से संपर्क करूंगा और देख सकता हूं कि वे क्या सुझाव देते हैं। धन्यवाद अरे। –

11

Authentication error: Unable to respond to any of these challenges: {}

यह त्रुटि संदेश अर्थ है कि सर्वर 401 (Unauthorized) स्थिति कोड के साथ जवाब दिया लेकिन एक भी प्रमाणन चुनौती (WWW-Authenticate हेडर) इस प्रकार यह असंभव HttpClient स्वचालित रूप से प्रमाणीकरण विफलता से उबरने के लिए बनाने के लिए प्रदान करने में विफल।

अधिकतर संभावित अनुप्रयोग HTTP पोस्ट अनुरोध में संलग्न HTML फॉर्म में प्रमाण-पत्रों के कुछ नरम की अपेक्षा करता है।

3

यहाँ कैसे मैं इसी तरह की समस्या के साथ समाप्त हो गया है:

DefaultHttpClient client = new DefaultHttpClient(); 
client.getCredentialsProvider().setCredentials(AuthScope.ANY, 
      new UsernamePasswordCredentials(username, password)); 

सही दिशा के लिए रयान के लिए धन्यवाद।

+0

मेरे लिए काम नहीं करता है ( –

1

मेरी ट्विटर अनुप्रयोग के लिए एक कॉलबैक URL को निर्दिष्ट मेरे लिए एक ही गलती के परिणामस्वरूप:

Authentication error: Unable to respond to any of these challenges: {oauth=WWW-Authenticate: OAuth realm="https://api.twitter.com"} 

ट्विटर पर एक कॉलबैक URL स्थापना समस्या

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