Reg*_*ego 1 rest https push ada http-post
我正在尝试为 https 网站推送制作一个简单的解析器,因此尝试遵循http://rosettacode.org/wiki/HTTP#Ada 中的示例,只需更改网站的地址即可。
所以我试过了
with Ada.Text_IO; use Ada.Text_IO;
with AWS.Client;
with AWS.Response;
procedure Main_Other is
begin
Put_Line (AWS.Response.Message_Body
(AWS.Client.Get
(URL => "https://google.com")));
end Main_Other;
Run Code Online (Sandbox Code Playgroud)
但我有一个例外
引发的 PROGRAM_ERROR :aws-client.adb:398 finalize/adjust 引发的异常 [2020-04-02 10:41:20] 进程以状态 1 退出,经过时间:00.80s
那么,关于如何解决这个问题的任何想法?
我想解析网站中某些表的当前状态,类似于在 Python 中制作类似的东西
import pandas as pd
def retrieve_json(json_url):
return pd.read_json(json_url)
Run Code Online (Sandbox Code Playgroud)
我想以最简单的方式编写此解决方案,甚至最好不要依赖 AWS。
请,谢谢。
您似乎正在使用禁用 SSL 支持的 AWS 版本(SSL 支持是可选的)。替换https为http应该可以解决问题。如果不安全的连接不是一个选项,要么在启用 SSL 支持的情况下重新编译 AWS(请参阅此处和此处),或者,如果您赶时间并且碰巧在 Linux 上开发,请继续使用GNAT.Expect和wget(使用 GNAT CE 2019 进行测试):
主文件
with Ada.Text_IO; use Ada.Text_IO;
with GNAT.Expect; use GNAT.Expect;
with GNATCOLL.JSON; use GNATCOLL.JSON;
procedure Main is
-------------------
-- Download_JSON --
-------------------
function Download_JSON (URL : String) return JSON_Value is
Cmd : constant String := "wget";
Arg_1 : aliased String := "-q"; -- Turn off Wget's own messages.
Arg_2 : aliased String := "-O"; -- Output response to ...
Arg_3 : aliased String := "-"; -- ... standard output.
Arg_4 : aliased String := URL;
Status : aliased Integer;
Response : String :=
Get_Command_Output
(Command => Cmd,
Arguments => (1 => Arg_1'Unchecked_Access,
2 => Arg_2'Unchecked_Access,
3 => Arg_3'Unchecked_Access,
4 => Arg_4'Unchecked_Access),
Input => "",
Status => Status'Unchecked_Access);
begin
-- Omitting check of 'Status' for brevity.
return Read (Response);
end;
Root : JSON_Value;
begin
Root := Download_JSON
("https://raw.githubusercontent.com/AdaCore/gnatcoll-core/" &
"master/testsuite/tests/json/validation/basic_object.json");
Put_Line (Write (Root));
end Main;
Run Code Online (Sandbox Code Playgroud)
默认.gpr
with "gnatcoll.gpr";
project Default is
for Source_Dirs use ("src");
for Object_Dir use "obj";
for Main use ("main.adb");
end Default;
Run Code Online (Sandbox Code Playgroud)
输出
$ ./main
{"a":1,"b":"a tringg","c":[1,2,3],"d":{"a":"a"},"e":null}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |