2017-10-31 18 views
-1

私はnode.jsを使ってNetSuiteのREST APIに接続しています。問題は、NetSuiteのポート番号がわからないためです。ポート番号を指定しないでください。ポート番号を指定しないと、80(デフォルト)になりますが、これは正しくありません。私はhttpsとしてポート443を試しましたが、NetSuiteの正しいポートではありません。Node.jsでポートを指定するのをスキップする方法http.request

「getaddrinfo ENOTFOUND」というエラーが表示されます。ここに私のコードです。

exports.helloGET =関数helloGET(REQ、RES){

//remove extra node 

var json_build = '{"__type" : "salesorder", "status":"Approved"}'; 

console.log(json_build); 

//call NS rest api 

var options = { 
    host: 'rest.na2.netsuite.com', 
    path: '/app/site/hosting/restlet.nl?script=55&deploy=1', 
    method: 'POST', 
    headers: { 
    'Content-Type': 'application/json', 
    'Keep-alive': 'timeout=30', 
    'Authorization' : 'NLAuth nlauth_account="4678710", nlauth_email="[email protected]", nlauth_signature="password", nlauth_role="3"' 
} 
}; 

var http = require('http'); 

var post_req = http.request(options, function(res) { 
    console.log('STATUS: ' + res.statusCode); 
    console.log('HEADERS: ' + JSON.stringify(res.headers)); 

    res.on('data', function (chunk) { 
    console.log('BODY: ' + chunk); 
    }); 
    res.on('end',function(){ 
     console.log('response ended'); 
    }); 
}); 

post_req.on('error', function(e) { 
    console.log('problem with request: ' + e.message); 
}); 
//post data 
post_req.write(json_build); 
post_req.end(); 

}。

「post_req.onエラー」の内部に入ります。

+0

ポートを知らなくても接続を確立できないため、ポート番号を把握する必要があります。 HTTPのデフォルト値は80、HTTPSのデフォルト値は443です。 – TGW

+0

私は443を試しました。NetSuiteがポート番号で応答するのを待っています。ありがとうTGW。 –

答えて

0

エラーENOTFOUNDは通常、指定したホストがDNSで見つからないため、実際にエラーが発生している可能性があります。これにはいくつかの理由が考えられます:What ENOTFOUND error in an http request, happening time to time, means?


接続するにはポートを知る必要があります。あなたはそれをスキップすることはできません。 TCP接続には、宛先IPアドレスとポート番号が必要です。ポート番号なしでは、HTTP接続の下にあるTCP接続を確立することはできません。

HTTPのデフォルトポートはポート80で、HTTPSのデフォルトポートは443です。http.request()の場合、ポートを指定しない限りポート80になります。 https.request()(別のhttpsモジュールに注意してください)では、ポートを指定しないと443になります。

ここで唯一の答えは、接続したいサービスがどのポートで実行されているかを調べることです。あらかじめわかっている既知のポートでない場合は、既知のサービスまたは構成データから実行中のポートを照会する方法が必要です。

また、HTTPSサービスに接続しようとする場合は、httpモジュールではなくhttpsモジュールを使用する必要があります。

+0

NetSuite for Portをリクエストしました。答えていただきありがとうございます。確かにhttpsモジュールを使用します。 –

0

実際には正しいホストに接続していません。

getdatacenters APIを使用して、アカウントのRESTletホストをルックアップします。

関連する問題