我正在尝试将情绪分析API用于我流式传输的一些推文。有问题的API是这样的:http://sentiment.vivekn.com/docs/api/。我之前在Python中已经做到了这一点,并且按预期工作。我使用请求库发出了发布请求,并发送了带有内容的JSON对象。 JSON对象看起来像这样:
<div class="flexbox">
<div class="left-nav">
<a href="#">Link1</a>
<a href="#">Link2</a>
<a href="#">Link3</a>
<a href="#">Link4</a>
<a href="#">Link5</a>
<a href="#">Link6</a>
<a href="#">Link7</a>
<a href="#">Link8</a>
</div>
<div class="logo">
Logo
</div>
<div class="right-search">
search
</div>
</div>
在Python中,发送发布请求的过程看起来像这样:
{
"txt": "The content of the tweet."
}
现在,我承认我通常是Java语言和基于Web的编程的新手,但是我认为两种语言的逻辑应该相似。我尝试使用XMLHttpRequest方法,但是它总是返回内部服务器错误,状态码为500。
该网站可以正常工作,它可以接收发布请求并进行分析,但是我无法使其与Node一起使用。这就是我在Javascript中使用的东西:
url = "http://sentiment.vivekn.com/api/text/"
data_dict = {
"txt": "hi"
}
r = requests.post(url,json.loads(json.dumps(data_dict)))
print(r.text)
它总是会捕获状态代码500的错误。我尝试了其他几种方法,包括使用XMLHttpRequest发出请求。似乎没有任何作用。如果有人能指出我要去哪里错,那将很好。
答案 0 :(得分:1)
这不是答案,但是我认为显示一些引起不同响应的代码很有用,这可能是有助于调试问题的线索。
我对curl的响应相同:
jim-macbookpro:~/development/node/so$ curl -X POST 'http://sentiment.vivekn.com/api/text/' -H "Content-Type: application/json" -d '{"txt": "hi"}'
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in theapplication.</p>
我将示例更改为使用“ node-fetch”,但我没有得到500,而是得到405-不允许使用方法。
我怀疑这是服务器存在某种形式的关于请求格式的非常特殊的问题。
我希望这会有所帮助。
const fetch = require('node-fetch');
fetch('http://sentiment.vivekn.com/api/text', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
txt:
'This is a very negative sentence, so we should get a negative analysis!'
})
})
.then(function(parsedBody) {
console.log('Request received');
console.log(parsedBody);
})
.catch(function(err) {
console.log('Something went wrong\n' + err);
});