在进行json调用时,从nginx获取411长度

时间:2014-12-22 15:22:45

标签: json node.js curl request

使用新的API - 如果有人关心/知道会员小鼠 - 并且在提出请求时遇到了“需要411长度”的响应。我正在使用下面的php函数成功调用API:

<?php
$inputParams = "apikey={{key}}&apisecret={{secret}}&"; 
$inputParams .= "email=ivan@email.com"; 

$apiCallUrl = "http://www.website.com/wp-content/plugins/membermouse/api/request.php?q=/getMember";
$ch = curl_init($apiCallUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $inputParams); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec($ch); 
curl_close($ch);

echo "RAW Response: ".$result."<br />"; 
$data = json_decode($result); 
echo "<pre>";
var_dump($data); 
echo "</pre>";
?>

但是我正在Node.js中构建我的应用程序,而我正在尝试使用Node的请求库进行比较调用。这是我到目前为止所拥有的。

var request = require('request');
var options = {
url: 'http://www.website.com/wp-content/plugins/membermouse/api/request.php',
json:true,
multipart: [

    { 
        'content-type': 'application/json',
        body: JSON.stringify({
            'q': '/getMember',
            'apikey': '{{key}}',
            'apisecret':'{{secret}}',
            'email':'ivan@email.com'
        }), 
    }
],

headers: {
    'content-type': 'application/json',
    'Connection': 'Keep-Alive',
}
};

function callback(error, response, body) {
     console.log(response);
     if (!error && response.statusCode == 200) {
         console.log(response);
     }
}

request.post(options, callback);

它拒绝让它通过具有411长度要求错误的nginx。任何人都知道发生了什么事吗?谢谢。

1 个答案:

答案 0 :(得分:0)

经过几个小时的尝试后,选择了节点卷曲 - 尽管并不理想,因为它与操作系统操作相关,它确实提供了一种很好的方式来提取我需要的信息。对于任何有兴趣的人:

var curl = require('node-curl');


var inputParams = "apikey={{}}&apisecret={{}}&email=ivan@email.com";
var apiCallUrl = "http://www.website.com/wp-content/plugins/membermouse/api/request.php?q=/getMember";

var options = {
    'POST':1,
    'POSTFIELDS':inputParams,
    'HEADER':0,
}


curl(apiCallUrl, options, function(error, body) {
    console.log(JSON.parse(body.body)['response_data']);
});