我终于有了这段代码:
res = Net::HTTP.post_form(URI('http://jobcoin.gemini.com/protozoan/api/transactions'), {})
=> #<Net::HTTPBadRequest 400 Bad Request readbody=true>
res.body
=> "{\"error\":{\"amount\":[\"This field is required\"],\"fromAddress\":[\"This field is required\"],\"toAddress\":[\"This field is required\"]}}"
即使出现错误,我也可以向服务器发送帖子请求。
readbody=true
是什么意思?这不起作用。为什么?错误消息的含义是什么?
Net::HTTP.post_form(URI('http://www.jobcoin.gemini.com/protozoan/api/transactions'), {})
SocketError: getaddrinfo: nodename nor servname provided, or not known
似乎www
导致此失败。为什么是这样?当我通过浏览器访问该网站时,该网站不存在。我一直认为这两个(使用www而没有www
)是相同的地址。不是吗?
nodename
或socketerror
究竟是什么意思?答案 0 :(得分:1)
执行 public static void main(String[] args) {
int[] thirteenMultiples = new int[400];
for (int dex = 1; dex < thirteenMultiples.length; dex ++) {
int multiples = 13 * dex;
thirteenMultiples[0] = multiples;
System.out.println(Arrays.toString(thirteenMultiples));
后收到的消息来自代表http响应的core ruby class:
post_form
这会输出实例变量def inspect
"#<#{self.class} #{@code} #{@message} readbody=#{@read}>"
end
(如果我理解的话)是一个告诉身体是否被读取的标志。
第二个问题太宽泛了。简而言之,您可以提供@read
或“裸域”或两者。通常人们会将请求从www
重定向到“裸域”,反之亦然。在您的情况下,似乎服务器不提供www
因此错误。错误信息非常明显 - “没有服务此端点的节点(计算机)” -
read about sockets.
答案 1 :(得分:1)
这里有几件事:
#<Net::HTTPBadRequest 400 Bad Request readbody=true>
。
根据回复机构的说法,你错过了一些必要的
参数。SocketError
表示您正在尝试连接到不存在的主机。现在回答你的问题:
readbody=true
表示已读取服务器响应。检查net/response.rb
第197行。SocketError
,nodename
和servname
的一些疑问,请参阅服务器的域名。希望它有所帮助。