我需要检查D中的服务器响应代码。例如,检查服务器是否返回404,200或其他代码。
我看了std.net.curl,但我不明白如何使用它。
我不确定但是我可能需要使用选项请求 例如:
import std.net.curl;
import std.stdio;
void main()
{
auto http = HTTP();
options("dlang.org", null, http);
writeln("Allow set to " ~ http.responseHeaders["Allow"]);
}
这个代码对我不起作用。我收到了下一个错误:
F:\temp\1>app.exe
core.exception.RangeError@app.d(8): Range violation
----------------
0x0041DB08
0x00402092
0x00426D8E
0x00426D63
0x00426C79
0x0041D857
0x7636338A in BaseThreadInitThunk
0x77C79F72 in RtlInitializeExceptionChain
0x77C79F45 in RtlInitializeExceptionChain
答案 0 :(得分:2)
您只需附加statusLine回调:
auto http = HTTP("dlang.org");
http.onReceiveStatusLine = (HTTP.StatusLine status){ responceCode = status.code; };
//attach onreceive callback as well
http.perform();
答案 1 :(得分:0)
工作代码:
import std.stdio;
import std.net.curl;
void main()
{
auto http = HTTP("dlang.org");
http.onReceiveStatusLine = (HTTP.StatusLine status){ writeln(status.code); };
http.onReceive = (ubyte[] data) { /+ drop +/ return data.length; };
http.perform();
}
如果有人解释我为什么要调用onReceive以及onReceive括号中的数据意味着
,我将非常感激。