node.js - Node 中的 API 请求返回错误

标签 node.js rest http

我正在使用一些请求参数向 Sphere Engine API 发出一个简单的 http 请求。但是,我无法解释错误。 API 规范:http://sphere-engine.com/services/docs/compilers#status

代码:

http = require('http') ;

var info = {
    sourceCode: 'print 3+4',
    language: 4,
    input: ''
} ;

var infoString = JSON.stringify(info);

var options = {
    host: 'api.compilers.sphere-engine.com',
    port: 80,
    path: '/api/v3/submissions?access_token=b11bf50b8a391d4e8560e97fd9d63460',
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Content-Length': infoString.length
    }
} ;

var req = http.request(options,function(res) {
    res.setEncoding('utf-8');
    var responseString = '' ;
    res.on('data', function(data) {
        responseString += data ;
    });
    res.on('end', function() {
        var resultObject = JSON.parse(responseString);
    });
} );

req.write(infoString);
req.end();

错误:

undefined:0

^
SyntaxError: Unexpected end of input
    at Object.parse (native)
    at IncomingMessage.<anonymous> (/Users/sarthakmunshi/nodetry.js:29:27)
    at IncomingMessage.emit (events.js:117:20)
    at _stream_readable.js:943:16
    at process._tickCallback (node.js:419:13)

最佳答案

此错误由 JSON.parse(responseString); 引起。您得到的响应不是 json 字符串(XML、HTML?),但尝试将其解析为 json。

您可以使用 xml-stream解析 XML 的库。

关于node.js - Node 中的 API 请求返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30614674/

相关文章:

javascript - Nodejs 中的 RXJS PostgreSQL 背压

ruby-on-rails - Rails : making link_to method send remote request as JSON type, 不是 JS 类型

perl - 强制没有 Content-type 的 HTTP 响应?

php - 内置方式来识别每个浏览器窗口

node.js - 使用 mongoose 在单个查询中获取小于 1 个月的所有条目以及大于 1 个月的最新条目

javascript - 一旦建立连接,连接就会丢失 - NodeJS/MYSQL

Node.js 和 Underscore.js

Django密码重置确认

google-app-engine - 调用 App Engine Endpoints API 时如何生成 OAuth2.0 Bearer?

c# - 期待 : 100-continue