Tôi phải viết một số mã với Node.JS cho tài liệu API, nhưng tôi đã thử vài ngày qua tất cả các giải pháp tôi có thể tìm thấy trên web (bao gồm cả Stack của khóa học) mà không cần ...Làm cách nào để yêu cầu auth HTTP Digest với Node.JS?
API của tôi sử dụng HTTP Digest Auth và đó là vấn đề, tôi đã có thể kết nối, đó là không phải là một vấn đề lớn nhưng mỗi lần tôi có sự trở lại giống nhau:
Got response : 401
HTTP Digest Authentication required for "api.example.com"
Bạn có thể hiển thị mã cơ sở của tôi dưới đây mà không auth! Bởi vì tôi không biết những gì tôi có thể làm sau khi tất cả các thử tôi đã làm:
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);
});
});
Một trong những thử cuối cùng của tôi là sử dụng mô-đun này https://npmjs.org/package/request nhưng ông không làm việc quá như mọi Tôi có 401!
Để biết thêm thông tin, tôi có thể kết nối và nhận thông tin tôi cần từ API của mình với Ruby, Python, php và Java, vì vậy tôi chắc chắn API của tôi hoạt động tốt và thông tin tôi chuyển là chính xác. Tôi sử dụng ổn định cuối cùng của Node v0.10.11!
Nếu ai đó có thể giúp tôi hoặc có giải pháp cập nhật, tôi sẽ rất vui.
EDIT: tôi sẽ bổ sung thêm một số chi tiết về thử nghiệm của tôi với các module Mickael/request
thử đầu tiên:
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)
}
});
Hãy thử thứ hai:
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);
nhưng sự trở lại vẫn như cũ 401
Cảm ơn bạn đã đề xuất nhưng như tôi đã nói trong bài đăng gốc của mình, tôi đã thử giải pháp này, bạn có thể tìm thấy liên kết ở cuối bài đăng của tôi! – Milo
Đăng mã của bạn bằng cách sử dụng 'yêu cầu'. "Tôi đã thử nó và nó không hoạt động" là không đủ để chúng tôi thực sự giúp bạn. –
Tôi đã chỉnh sửa để thêm mã bằng cách sử dụng yêu cầu. cảm ơn sự giúp đỡ của bạn :) – Milo