15

APIドキュメントのためにNode.JSでコードを書く必要がありますが、ここ数日、Webで見つけたすべてのソリューション(もちろんスタックを含む)を試してみましたが、成功しませんでした...

私のAPIはHTTP Digest Authを使用していますが、それが問題です。接続できました。それは大したことではありませんでしたが、毎回同じリターンが返されました:

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);
    });
});

私の最後の試みの1つは、このモジュールhttps://npmjs.org/package/requestを使用することでしたが、 401 を取得するたびに機能しません!

詳細については、Ruby、Python、php、および Java を使用して API に接続し、必要な情報を取得することができたので、API が正常に機能し、渡した情報が正しいと確信しています。Node 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)
    }
});

2 回目の試行:

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

4

4 に答える 4

14

requestこれは、API に従って使用するように修正された例です。

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)
    }
});

リクエストの連鎖可能なスタイルの API は少しわかりにくいですが (IMHO)、そのように機能させることもできると思います。

于 2013-06-14T14:45:23.037 に答える
1

リクエスト パッケージのダイジェスト認証が不完全なようです。

試すことができます: https://npmjs.org/package/http-digest-client、ダイジェスト認証のためのかなりまともな軽量実装です。

本文メッセージを送信するダイジェスト認証 POST を実行する必要がある場合は、http-digest-client と組み合わせて request を使用できます。両方をインストールした後、node-modules の下の http-digest-client コードを開き、http パッケージの使用を request パッケージ api に置き換えます。

于 2013-09-14T10:44:34.840 に答える