12
var https = require('https');  

var p = '/api/username/FA/AA?ZOHO_ACTION=EXPORT&ZOHO_OUTPUT_FORMAT=JSON&ZOHO_ERROR_FORMAT=JSON&ZOHO_API_KEY=dummy1234&ticket=dummy9876&ZOHO_API_VERSION=1.0';  

var https = require('https');  
var options = {  
  host: 'reportsapi.zoho.com',  
  port: 443,  
  path: p,  
  method: 'POST'  
};  

var req = https.request(options, function(res) {  
  console.log("statusCode: ", res.statusCode);  
  console.log("headers: ", res.headers);  
  res.on('data', function(d) {  
    process.stdout.write(d);  
  });  
});  
req.end();  

req.on('error', function(e) {  
  console.error(e);  
});  

上記のコードを実行すると、以下のエラーが発生します。

エラーメッセージ:

statusCode:  411  
headers:  { 'content-type': 'text/html',  
  'content-length': '357',  
  connection: 'close',  
  date: 'Thu, 24 Nov 2011 19:58:51 GMT',  
  server: 'ZGS',  
  'strict-transport-security': 'max-age=604800' }  
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  


411 - Length Required  

上記のエラーを修正するにはどうすればよいですか?
以下でやってみました

var qs =   'ZOHO_ACTION=EXPORT&ZOHO_OUTPUT_FORMAT=JSON&ZOHO_ERROR_FORMAT=JSON&ZOHO_API_KEY=dummy1234&ticket=dummy9876&ZOHO_API_VERSION=1.0';
'   
options.headers = {'Content-Length': qs.length}  

しかし、この方法を試してみると、以下のエラーが発生します:

{ stack: [Getter/Setter],  
  arguments: undefined,  
  type: undefined,  
  message: 'socket hang up' }  

誰でもこれについて私を助けることができますか?

ありがとう
コティ

PS: URL 全体をブラウザのアドレス バーに入力して Enter キーを押すと、期待どおりに JSON 応答が返されます。

4

4 に答える 4

8

与えられた問題の解決策は、POST リクエストを作成したい場合、オプション オブジェクトの「ヘッダー」フィールドに「Content-Length」フィールドが含まれるように設定することであることがわかりました。

ここのコードを参照してください:

node.jsでHTTP POSTリクエストを作成するには?

于 2012-03-09T22:15:54.007 に答える
2
var server = http.createServer();
server.on('request', function(req, res) {

    req.on('data',function(data){

        res.writeHead(200, {'Content-Type': 'text/plain','Content-Length':data.toString().length+''});
        res.write(data.toString());
        res.end();
    });  

});
于 2016-08-23T09:52:30.920 に答える
-6

メソッドを POST から GET に変更することで、この問題を解決できます。

ありがとうコティ

于 2011-11-28T04:51:54.533 に答える