SWI Prolog http_post和http_delete莫名其妙地挂起
当我尝试使用SWI Prolog的SWI Prolog http_post和http_delete莫名其妙地挂起,http,prolog,swi-prolog,Http,Prolog,Swi Prolog,当我尝试使用SWI Prolog的http\u post/4时,如下所示: :- use_module(library(http/http_client). update(URL, Arg) :- http_post(URL, form([update = Arg), _, [status_code(204)]). 当我查询这个规则并观察TCP流量时,我看到HTTP POST请求和带有预期204状态代码的应答都会立即发生。但是,在返回“true”之前,Prolog最多会挂起30秒。发
http\u post/4
时,如下所示:
:- use_module(library(http/http_client).
update(URL, Arg) :-
http_post(URL, form([update = Arg), _, [status_code(204)]).
当我查询这个规则并观察TCP流量时,我看到HTTP POST请求和带有预期204状态代码的应答都会立即发生。但是,在返回“true”之前,Prolog最多会挂起30秒。发生了什么事情阻止规则立即返回
我也尝试过这个变体,但它也挂起了:
:- use_module(library(http/http_client).
update(URL, Arg) :-
http_post(URL, form([update = Arg), Reply, [status_code(204)]),
close(Reply).
我对http\u delete/3
也有类似的问题,但对于http\u get/3
声明http\u post
它相当于http_get/3,只是提供了一个输入文档,该文档是使用http_post_data/3发布的
http_get的选项中有timeout(+timeout)。这可能有助于降低延迟,但由于默认设置为+无限,我担心无法解决问题。似乎您正在调用的服务使连接保持活动状态,直到某个超时
就我个人而言,在https上调用Google API服务时,我不得不使用http_open,而不是http_post…谢谢你,Dmitri(我的西里尔文已经生锈了,请原谅我翻译错了)。我不知道如何使用反勾号进行格式设置。将连接(关闭)
添加到选项
参数成功了!