Html 如何在SWI Prolog中处理POST请求?

Html 如何在SWI Prolog中处理POST请求?,html,forms,post,prolog,swi-prolog,Html,Forms,Post,Prolog,Swi Prolog,我有这样一个HTML表单: <form action="test" method="post"> <input name="first_name" type="text"/> <input name="last_name" type="text" /> <input name="age" type="text" /> <input type="submit" value="Send"/> </form> 这

我有这样一个HTML表单:

<form action="test" method="post">
  <input name="first_name" type="text"/>
  <input name="last_name" type="text" />
  <input name="age" type="text" />
  <input type="submit" value="Send"/>
</form>

这只给我带来了一个
500
代码错误(内部服务器错误)。

您应该使用
http/http\u客户端
库(
:-use\u模块(库(http/http\u客户端))

此外,我不确定有两个用于测试的处理程序如何工作。 最后,我认为格式(数据)可能不起作用,特别是因为它应该返回一个html文档

顺便说一下,要检索字段的值,可以执行以下操作:

http_read_data(Request, [first_name=FN, last_name=LN, age=A|_], []).

我对http prolog库非常陌生,我建议检查您应该使用
http/http\u客户端
库(
:-use\u模块(库(http/http\u客户端))

此外,我不确定有两个用于测试的处理程序如何工作。 最后,我认为格式(数据)可能不起作用,特别是因为它应该返回一个html文档

顺便说一下,要检索字段的值,可以执行以下操作:

http_read_data(Request, [first_name=FN, last_name=LN, age=A|_], []).
我对http prolog库非常陌生,我建议检查我使用的
库(http/http\u参数)
。有了这个,我可以做到

load_graph(Request) :-
    http_parameters(Request,
            [path(Path, [atom]),
             aperture(Aperture, [integer])]),
其中load_graph是表单的处理程序

...
html(form([action(Ref)],
      dl([dt('Root Path'), dd(input([name=path, type=text, value=Default])),
          dt('Aperture'), dd(select([name=aperture], Aplist)),
          dt('Go!'), dd(input([type=submit, value='Load!']))
      ]))).
我使用
库(http/http\u参数)
。有了这个,我可以做到

load_graph(Request) :-
    http_parameters(Request,
            [path(Path, [atom]),
             aperture(Aperture, [integer])]),
其中load_graph是表单的处理程序

...
html(form([action(Ref)],
      dl([dt('Root Path'), dd(input([name=path, type=text, value=Default])),
          dt('Aperture'), dd(select([name=aperture], Aplist)),
          dt('Go!'), dd(input([type=submit, value='Load!']))
      ]))).

本质上,您将像处理普通请求一样处理请求,检查请求中的method(方法)术语是否为method(post)

http_读取_数据将读取请求正文。 正文将像URI查询字符串一样进行编码,因此URI\u query\u components/2 将其转换为键=值项列表

?-uri_查询_组件('a=b&c=d%2Bw&n=VU%20Amsterdam',Q)。 Q=[a=b,c='d+w',n='VU阿姆斯特丹']


对于寻找类似信息的其他人-如果您的响应是json,您可以使用read_json_dict以dict的形式获取数据。

基本上,您将像正常一样处理请求,检查请求中的方法(method)术语是否为方法(post)

http_读取_数据将读取请求正文。 正文将像URI查询字符串一样进行编码,因此URI\u query\u components/2 将其转换为键=值项列表

?-uri_查询_组件('a=b&c=d%2Bw&n=VU%20Amsterdam',Q)。 Q=[a=b,c='d+w',n='VU阿姆斯特丹']


对于寻找类似信息的其他人-如果您的回答是json,您可以使用read_json_dict以dict的形式获取数据。

Annie,说真的,这是一个只包含链接的答案;我应该投反对票,但不会。我知道你是谁,也非常感谢你为Prolog,特别是SWI Prolog社区所做的一切。这不是我想要的答案。(陈词滥调)。你的回答说它出现在
3_2中
但那不是正确的部分。有第6.2节
。处理POST请求
。如果你能给出一个真实的答案,那会有帮助的。谢谢。:)修正为更清晰、最新。我的网络教程已经过时了。安妮,说真的,这是一个只有链接的答案;我应该投反对票,但不会。我知道你是谁,也非常感谢你为Prolog,特别是SWI Prolog社区所做的一切。这不是我想要的答案。(陈词滥调)。你的回答说它出现在
3_2中
但那不是正确的部分。有第6.2节
。处理POST请求
。如果你能给出一个真实的答案,那会有帮助的。谢谢。:)修正为更清晰、最新。我的网络教程已经过时了。