下面的查询适用于请求者
URI:
http://www.cleverbot.com/webservicemin/查询:
start=y&icognoid=wsf&fno=0&sub=Say&islearning=1&cleanslate=false&stimulus=!!!%20there%20was%20an%20error%20!!!&icognocheck=af71393ce00d9126a247df2f53948e79但是它不适用于em-http-request
require 'eventmachine'
require 'em-http-request'
uri = 'http://www.cleverbot.com/webservicemin/'
query = 'start=y&icognoid=wsf&fno=0&sub=Say&islearning=1&cleanslate=false&stimulus=!!!%20there%20was%20an%20error%20!!!&icognocheck=af71393ce00d9126a247df2f53948e79'
EM.run do
http = EM::HttpRequest.new(uri).post(query: query)
http.callback { puts http.response; EM.stop }
http.errback { puts 'There was an error'; EM.stop }
end打印There was an error。我感到很困惑,因为这个简单的例子适用于任何其他发送请求的方法,我已经检查了一下我的用法是否错误,但它似乎并不正确。
编辑:仅供参考,这不是正确的方式使用cleverbot。我犯了第二个错误,在:query下发送数据。如果您使用http.post(body: query),它将工作
发布于 2014-08-07 01:08:00
看起来像一个实现不好的服务器:它中止TCP连接而不返回正确的HTTP状态代码,这就是在查询http.error时看到“服务器关闭的连接”的原因。
如果将默认用户代理更改为curl的UA字符串,则会得到响应:
http = EM::HttpRequest.new(uri).post({
:query => query,
:head => {'User-Agent' => 'curl/7.30.0'}
})https://stackoverflow.com/questions/25164272
复制相似问题