7

मुझे एपीआई दस्तावेज के लिए नोड.जेएस के साथ कुछ कोड लिखना है, लेकिन मैंने पिछले कुछ दिनों में वेब पर (समाधान के स्टैक सहित) के सभी समाधानों की कोशिश की है ...अनुरोध कैसे करें HTTP डायजेस्ट ऑथ Node.JS के साथ?

मेरा एपीआई HTTP डाइजेस्ट प्रमाणीकरण का उपयोग करें और यही समस्या है, मैं कनेक्ट कर सकता था, कि की नहीं एक बड़ी बात थी, लेकिन हर मैं एक ही वापसी हो गया है:

Got response : 401 
HTTP Digest Authentication required for "api.example.com" 

आप प्रमाणन के बिना नीचे मेरी आधार कोड दिखा सकते हैं! क्योंकि मैं मैं क्या सब कोशिश मैंने किया था के बाद कर सकते हैं पता नहीं है:

var http = require('http') 

var options = { 
    host: 'api.example.com', 
    path: '/example/1.xml', 
}; 

var request = http.get(options, function(res){ 
    var body = ""; 
    res.on('data', function(data){ 
     body += data; 
    }) 
    res.on('end', function(){ 
     console.log('Got response : ' + res.statusCode); 
     console.log(body); 
    }) 
    res.on('error', function(e){ 
     console.log('Got error : ' +e.message); 
    }); 
}); 

मेरा आखिरी कोशिश में से एक इस मॉड्यूल https://npmjs.org/package/request उपयोग करने के लिए था, लेकिन वह हर रूप में भी काम नहीं करता मैं 401 मिल गया है!

अधिक जानकारी के लिए मैं रूबी, पायथन, PHP, और जावा के साथ अपने एपीआई से आवश्यक जानकारी को कनेक्ट और प्राप्त करने में सक्षम था, इसलिए मुझे यकीन है कि मेरा एपीआई अच्छी तरह से काम कर रहा है और जो जानकारी मैं पास करता हूं वह सही है। मैं नोड v0.10.11 के अंतिम स्थिर उपयोग का उपयोग करता हूं!

अगर कोई मेरी मदद कर सकता है या समाधान का समाधान कर सकता है तो मैं खुश रहूंगा।

संपादित करें: मैं मॉड्यूल के साथ अपने परीक्षण के बारे में कुछ विवरण जोड़ देगा Mickael/request

पहला प्रयास:

var request = require('request') 

var options = { 
    'url': 'http://api.example.fr/example/1.xml', 
    'auth': { 
     'user': 'test', 
     'pass': 'test', 
     'sendImmediately': false 
    } 
}; 

var request = request.get(options, function(error, response, body){ 
    if (!error && response.statusCode == 200){ 
     console.log('body : ' + body) 
    } 
    else{ 
     console.log('Code : ' + response.statusCode) 
     console.log('error : ' + error) 
     console.log('body : ' + body) 
    } 
}); 

दूसरा प्रयास करें:

var request = require('request') 

request.get('http://api.example.fr/example/1.xml', function(error, response, body){ 
    if (!error && response.statusCode == 200){ 
     console.log('body : ' + body) 
    } 
    else{ 
     console.log('Code : ' + response.statusCode) 
     console.log('error : ' + error) 
     console.log('body : ' + body) 
    } 
}).auth('test', 'test', false); 

लेकिन बदले अब भी वही है 401

उत्तर

6

यहां आपका परीक्षा है ई के एपीआई के अनुसार request का उपयोग करने के लिए सही किया गया।

var options = { 
    uri: 'http://api.example.fr/example/1.xml', 
    auth: { 
    user: 'test', 
    pass: 'test', 
    sendImmediately: false 
    } 
}; 
request(options, function(error, response, body){ 
    if (!error && response.statusCode == 200){ 
     console.log('body : ' + body) 
    } 
    else{ 
     console.log('Code : ' + response.statusCode) 
     console.log('error : ' + error) 
     console.log('body : ' + body) 
    } 
}); 

अनुरोध chainable शैली एपीआई थोड़ा (IMHO) भ्रामक है, लेकिन मेरा मानना ​​है कि आप इसे इस तरह के रूप में अच्छी तरह से काम कर सकते हैं।

+0

सुझाव के लिए धन्यवाद लेकिन जैसा कि मैंने अपनी मूल पोस्ट में कहा था, मैंने इस समाधान की कोशिश की है कि आप मेरे पोस्ट के अंत में लिंक पा सकते हैं! – Milo

+0

'request' का उपयोग करके अपना कोड पोस्ट करें। "मैंने कोशिश की और यह काम नहीं किया" वास्तव में आपकी मदद करने के लिए पर्याप्त नहीं है। –

+0

मैं अनुरोध का उपयोग कर अपना कोड जोड़ने के लिए संपादन कर रहा था। आपकी मदद के लिए धन्यवाद :) – Milo

1

अनुरोध पैकेज में डाइजेस्ट ऑथ अधूरा प्रतीत होता है।

आप कोशिश कर सकते हैं: https://npmjs.org/package/http-digest-client, यह पाचन प्रमाणीकरण के लिए एक सुंदर सभ्य हल्के कार्यान्वयन है।

यदि आपको एक संदेश संदेश भेजने के साथ डाइजेस्ट ऑथ पोस्ट करने की आवश्यकता है तो आप http-digest-client के संयोजन के साथ अनुरोध का उपयोग कर सकते हैं। दोनों स्थापित करने के बाद बस नोड-मॉड्यूल के तहत http-digest-client कोड खोलें और अनुरोध पैकेज api के साथ http पैकेज के उपयोग को प्रतिस्थापित करें।

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