Когда я пытаюсь использовать http_post/4
SWI-Prolog, следующим образом:
:- use_module(library(http/http_client).
update(URL, Arg) :-
http_post(URL, form([update = Arg), _, [status_code(204)]).
Когда я запрашиваю это правило и наблюдаю за трафиком TCP, я вижу, что запрос HTTP POST и ответ с ожидаемым кодом состояния 204 происходят немедленно. Однако Prolog зависает на срок до 30 секунд, прежде чем вернуть «истину». Что происходит, что препятствует немедленному возврату правила?
Я тоже пробовал этот вариант, но он тоже зависает:
:- use_module(library(http/http_client).
update(URL, Arg) :-
http_post(URL, form([update = Arg), Reply, [status_code(204)]),
close(Reply).
У меня похожая проблема с http_delete/3
, но нет с http_get/3
.