2013-07-11 3 views
0

Здравствуйте, я хочу использовать xively с функцией curl. Я использую nodejs для получения значений моего arduino с моей малиной. Я хотел бы знать, знаете ли вы, как использовать curl с nodejs, потому что после нескольких попыток я потерпел неудачу. Thanknode.js Xively curl

+0

Можете ли вы показать свой начальный код, который вы пробовали? Я думаю, что это поможет в качестве отправной точки. – praks411

ответ

1

Если вы ссылаетесь на PHP curl, то все, что вам нужно знать, что node.js не имеет «завитка» (что означает «URL-адрес клиента»). Он имеет http модуль с request и get методов, чтобы сделать http-запросы. Который имеет ту же цель, что и PHP.

Вы по-прежнему можете выполнить сценарий оболочки с помощью child_process.exec, но при этом вы рискуете, что приложение, которое вы запускаете через exec, может быть зависимым от платформы, в этом случае оно может работать на Windows и не будет работать в Linux или какой-либо другой проблеме. Для xively вы должны использовать http.request - и это сделает всю работу за вас. И это будет проще, так как получение выхода от curl через child_process.exec будет намного сложнее, чем через http.request.

Так на основе документации здесь: https://xively.com/dev/tutorials/curl/
Я сделал http.request альтернативу для того, чтобы запросить их корм:

var data = JSON.stringify({ 
    title: 'My feed', 
    version: '1.0.0' 
}); 

var req = http.request({ 
    host: 'api.xively.com', 
    path: '/v2/feeds', 
    method: 'POST', 
    headers: { 
    'X-ApiKey': 'YOUR_API_KEY_HERE', 
    'Content-Type': 'application/json', 
    'Content-Length': data.length 
    } 
}, function(res) { 
    res.setEncoding('utf8'); 
    console.log('Status Code: ' + res.statusCode); 
    console.log('Headers:'); 
    console.log(res.headers); 

    var buffer = ''; 
    res.on('data', function(chunk) { 
    buffer += chunk; 
    }); 
    res.on('end', function() { 
    console.log('complete'); 
    console.log(buffer); 
    }); 
}); 

res.write(data); 
res.end(); 

Я написал этот код в браузере, и не уверен, что полностью правильно , пожалуйста, попробуйте и дайте мне знать, если что-то не так, что я исправлю код выше.
Как вы можете видеть, он поддерживает все функции, предлагаемые CURL, и является более гибким и приятным с точки зрения использования.

Не стесняйтесь использовать их для совершения HTTP-вызовов.

+0

И с node.js как выполнить скрипт оболочки? – user2572562

+0

Я обновил ответ выше. Но, пожалуйста, используйте 'http.request', это то же самое, что и curl, и проще в использовании. Как и в случае с 'child_process.exec', вызов' curl' будет более сложным для использования и более кодирования. Однако без какой-либо выгоды. – moka

+0

Но можно ли запустить оболочку скрипта? Локоть это как в nodejs? curl --request PUT \ --data-binary '{"datastreams": [{"id": "1", "tags": "' 1", "current_value": "12"}]} '\ --header "X-ApiKey: Q" \ --verbose \ https://api.xively.com/v2/feeds/ – user2572562

0

Но можно ли запустить оболочку скрипта?

Скручивание это как в nodejs? curl --request PUT \ --data-binary '{"datastreams": [{"id": "1", "tags": "' 1", "current_value": "12"}]} '\ --header "X-ApiKey: Q" \ --verbose \ https://api.xively.com/v2/feeds/

Смежные вопросы