til*_*mik 5 rest get http node.js
我正在尝试从node.js发出GET请求。该请求是针对将访问Hbase并返回数据的REST服务器。GET请求中包含所有必需的Hbase信息(表,键,列族等)。以下是代码。
var http = require('http');
var url = {
host: '127.0.0.1',
port: 8000,
path: '/table-name/key/column-family',
headers: {
'Content-Type': 'application/octet-stream'
},
};
http.get(url, function(resp){
console.log("Status: " + resp.statusCode);
console.log("Header: " + JSON.stringify(resp.headers));
resp.setEncoding('utf8');
var completeResponse = '';
resp.on('data', function (chunk) {
completeResponse += chunk;
});
resp.on('end', function(chunk) {
console.log(completeResponse);
});
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,我得到的响应并不总是要求的八位字节流。大多数时候,数据是带有以下标题的有效格式。
{"content-length":"454","x-timestamp":"1395469504346","content-type":"application/octet-stream"}
Run Code Online (Sandbox Code Playgroud)
但是,说出十分之一的响应是带有标题的XML字符串,如下所示。
{"content-type":"text/xml","content-length":"793"}
Run Code Online (Sandbox Code Playgroud)
在两种情况下,状态码都是200,我一直在请求一个现有的密钥。此行为看似随机,并非由任何特定键引起。
如何确保响应始终是八位字节流,而不是XML / JSON?
小智 1
正如注释中所述,您需要设置Accept标头来指定您期望(接受)服务器响应的内容类型。请注意,您可以接受不止一种类型的回复。
Content -Type标头指定消息正文中内容的类型。它可以由您的客户端在 POST/PATCH 请求中设置,也可以由服务器在其响应中设置。在接收方,它用于了解如何处理正文内容。
有关更多详细信息,您可以参考综合MDN 内容协商文档
| 归档时间: |
|
| 查看次数: |
9894 次 |
| 最近记录: |