是一个页面,仅在从Web表单完成POST请求后才显示数据。
我无法理解在发送邮件请求后如何从变量页面获取数据的问题。
我的代码:
void main()
{
string baseurl = "http://www.kakioka-jma.go.jp/cgi-bin/plot/plotNN.pl";
string postreq = "place=kak&lang=en&datatype=provisional&datakind=e&sampling=1-min&hipasssec=150&year=2015&month=2&day=18&hour=0&min=0";
auto http = HTTP(baseurl);
http.postData = postreq;
auto x = http.responseHeaders();
http.perform();
writeln("=");
writeln(x);
}
完成http.perform();
后,我在控制台页面内容上看到了。但我不想输出。我想把它放在变量中,然后解析。
它看起来writeln(x);
是空的......
请你展示一些例子并说出我做错了什么。
答案 0 :(得分:1)
std.net.curl库实际上为HTTP get
和post
提供了更高级别的功能。您可以通过以下方式获取页面文本:
void main()
{
string baseurl = "http://www.kakioka-jma.go.jp/cgi-bin/plot/plotNN.pl";
string postreq = "place=kak&lang=en&datatype=provisional&datakind=e&sampling=1-min&hipasssec=150&year=2015&month=2&day=18&hour=0&min=0";
string content = post(baseurl, postreq).idup;
writeln(content);
}
然后将content
传递给您的解析函数。您还可以将变量作为URL变量传递到此页面上的perl脚本,并使用GET调用:
string myurl = "http://www.kakioka-jma.go.jp/cgi-bin/plot/plotNN.pl?place=kak&lang=en&datatype=provisional&datakind=e&sampling=1-min&hipasssec=150&year=2015&month=2&day=18&hour=0&min=0";
string content = get(myurl).idup;
无需担心发布数据。