英語版
このページの英語版を見る

std.net.curl

libcurlが提供するネットワーククライアント機能。このモジュールを使用するには、libcurl ライブラリがシステムにインストールされていなければならない。 がインストールされている必要がある。

注釈 curl ライブラリーとリンクする必要があるかもしれない。"libs": ["curl"] dub.json を追加してリンクする必要があるかもしれない。

Windows x86の注釈: DMD互換のlibcurlスタティック ライブラリは、dlang.orgのダウンロード アーカイブ ページからダウンロードできる。 download archive pageからダウンロードできる。
このモジュールはiOS、tvOS、watchOSでは利用できない。
libcurlを直接使用するのに比べ、このモジュールは一般的な用途のクライアントコードをよりシンプルにすることができる。 このモジュールは、libcurlを直接使用するのに比べて、一般的な用途のクライアントコードがシンプルになり、安全でない操作が不要になり、他の言語との統合性が向上する 言語の他の部分とよりよく統合される。さらに へのアクセスを提供する。
高レベルと低レベルのAPIが利用できる。高レベルAPIは の上に構築されている。
高レベルAPIは、HTTP/FTP取得のような一般的に使用される機能のためのものである。高レベルAPIは byLineAsyncbyChunkAsync関数は非同期的に 与えられたリクエストを実行し、取得したコンテンツを範囲に出力する。
低レベルのAPIでは、ストリーミング、リクエストヘッダーやクッキーの設定、その他の高度な機能を使うことができる。
チートシート
関数名 説明
ハイレベル
download download("ftp.digitalmars.com/sieve.ds", "/tmp/downloaded-ftp-file") URLからファイルシステムにファイルをダウンロードする。
upload upload("/tmp/downloaded-ftp-file", "ftp.digitalmars.com/sieve.ds"); ファイルをファイルシステムからURLにアップロードする。
get get("dlang.org") dlang.orgのウェブページを含むchar[]を返す。
put put("dlang.org", "Hi") を含むchar[]を返す。 dlang.orgのウェブページを含むchar[]を返す。
post post("dlang.org", "Hi") を含む char[] を返す。 dlang.orgのWebページを含むchar[]を返す。
byLine byLine("dlang.org") を含む char[] の範囲を返す。 dlang.orgのWebページを含むchar[]の範囲を返す。
byChunk byChunk("dlang.org", 10) を含むubyte[10]の範囲を返す。 dlang.orgのWebページを含むubyte[10]の範囲を返す。
byLineAsync byLineAsync("dlang.org") dlang.orgのWebページを含むchar[]の範囲を非同期に返す。 ページを含むchar[]の範囲を返す。
byChunkAsync byChunkAsync("dlang.org", 10) dlang.orgのWebページを含むubyte[10]の範囲を非同期に返す。 の範囲を返す。
低レベル
HTTP 高度なHTTP使用のための構造体
FTP 高度なFTP使用のための構造体
SMTP SMTPの高度な使い方のための構造体

"例

import std.net.curl, std.stdio;

// URLで指定された内容を含むchar[]を返す
auto content = get("dlang.org");

// データを投稿し、URLで指定された内容を含むchar[]を返す
auto content = post("mydomain.com/here.cgi", ["name1" : "value1", "name2" : "value2"]);

// ftpサーバーからファイルの内容を取得する
auto content = get("ftp.digitalmars.com/sieve.ds");

// 投稿し、内容を一行ずつプリントアウトする。リクエストは別のスレッドで行われる。
foreach (line; byLineAsync("dlang.org", "Post data"))
    writeln(line);

// 行範囲とプロキシ設定を使用して取得する
auto client = HTTP();
client.proxy = "1.2.3.4";
foreach (line; byLine("dlang.org", client))
    writeln(line);
高レベル関数が提供する以上の制御を行いたい場合は、低レベルAPIを使用する:

import std.net.curl, std.stdio;

// カスタム・データ・レシーバーでGETする
auto http = HTTP("dlang.org");
http.onReceiveHeader =
    (in char[] key, in char[] value) { writeln(key, ": ", value); };
http.onReceive = (ubyte[] data) { /+ ドロップ +/ return data.length; };
http.perform();
まず、参照カウントHTTP構造体のインスタンスが作られる。それから カスタムデリゲートが設定される。これらは、HTTPインスタンスがヘッダーとデータ・バッファをそれぞれ受け取るたびに呼び出される。 インスタンスがヘッダーとデータ・バッファを受け取るたびに呼び出される。この単純な例では、ヘッダは標準出力に書き出される。 ヘッダーは標準出力に書き出され、データは無視される。リクエストが終了する前に onReceiveコールバックからdata.lengthより小さい値を返す。 を返す。参照 onReceiveHeader/onReceiveを参照のこと。 を参照のこと。最後に、HTTPリクエストはperform()を呼び出すことで実行される。 を呼び出すことで実行される。

ソース std/net/curl.d

Authors:
Jonas Drewsen. Some of the SMTP code contributed by Jimmy Cao.

クレジット この関数はlibcurlに基づいている。 libcurlはMIT/X派生ライセンスの下でライセンスされている。

struct AutoProtocol;

"例:

import std.net.curl;
// 以下の2つのリクエストも同様である。
char[] content;

// 明示的な接続が提供される
content = get!HTTP("dlang.org");

// URLから接続型を推測する
content = get!AutoProtocol("ftp://foo.com/file");
// また、AutoProtocolがデフォルトであるため、これは同じことである
content = get("ftp://foo.com/file");
// そして最終的には、URLからFTPを検出し、同じものになるだろう
content = get!FTP("ftp://foo.com/file");

void download(Conn = AutoProtocol)(const(char)[] url, string saveToPath, Conn conn = Conn())
if (isCurlConn!Conn);
HTTP/FTPでローカルファイルシステムにダウンロードする。
Parameters:
const(char)[] url ダウンロードするリソース
string saveToPath ダウンロードしたコンテンツをローカルディスクに保存するパス。
Conn conn 使用する接続(例:FTPまたはHTTP)。デフォルトのAutoProtocolは 接続型を推測し、この呼び出しのためだけに新しいインスタンスを作成する。

例:

import std.net.curl;
download("https://httpbin.org/get", "/tmp/downloaded-http-file");

void upload(Conn = AutoProtocol)(string loadFromPath, const(char)[] url, Conn conn = Conn())
if (isCurlConn!Conn);
HTTPまたはFTPプロトコルを使用して、ローカルファイルシステムからファイルをアップロードする。
Parameters:
string loadFromPath ローカルディスクからデータをロードする。
const(char)[] url アップロード先リソース
Conn conn FTPまたはHTTPなどの接続を使用する。デフォルトのAutoProtocolは 接続型を推測し、この呼び出しのためだけに新しいインスタンスを作成する。

例:

import std.net.curl;
upload("/tmp/downloaded-ftp-file", "ftp.digitalmars.com/sieve.ds");
upload("/tmp/downloaded-http-file", "https://httpbin.org/post");

T[] get(Conn = AutoProtocol, T = char)(const(char)[] url, Conn conn = Conn())
if (isCurlConn!Conn && (is(T == char) || is(T == ubyte)));
HTTP/FTPでコンテンツを取得する。
Parameters:
const(char)[] url 取得するリソース
Conn conn FTPやHTTPなどの接続を使用する。デフォルトのAutoProtocolは は接続型を推測し、この呼び出しのためだけに新しいインスタンスを作成する。
テンプレート・パラメータT は、返す型を指定する。指定可能な値は以下のとおりである。 char[] またはubyte[] を返すには、char およびubyte を指定する。 char を求める場合、コンテンツは接続文字セットから変換される。 (HTTP応答ヘッダーまたはFTP接続プロパティで指定される。どちらもデフォルトではISO-8859-1)からUTF-8に変換される。 からUTF-8に変換される。

例:

import std.net.curl;
auto content = get("https://httpbin.org/get");

Returns:
URLが指すリソースの内容を含むT[]範囲。
Throws:
CurlException エラー時に
See Also:
T[] post(T = char, PostUnit)(const(char)[] url, const(PostUnit)[] postData, HTTP conn = HTTP())
if (is(T == char) || is(T == ubyte));

T[] post(T = char)(const(char)[] url, string[string] postDict, HTTP conn = HTTP())
if (is(T == char) || is(T == ubyte));
HTTPポストの内容。
Parameters:
const(char)[] url 投稿先リソース
string[string] postDict リクエストの本文として送信するデータ。の連想配列が使える。 string でエンコードされる。 でエンコードされる。
const(PostUnit)[] postData リクエストの本文として送信するデータ。任意の型の配列 をubyte[]にキャストして送信する。 にキャストされてから送信される。
HTTP conn 使用するHTTP接続
T テンプレートパラメータT は、返す型を指定する。指定可能な値 char[] またはubyte[] を返すにはcharubyte を指定する。 char を要求する場合、コンテンツは接続文字セットから変換される。 (HTTP応答ヘッダーまたはFTP接続プロパティで指定される。どちらもデフォルトではISO-8859-1)からUTF-8に変換される。 デフォルトではどちらもISO-8859-1)からUTF-8に変換される。
Examples:
import std.net.curl;

auto content1 = post("https://httpbin.org/post", ["name1" : "value1", "name2" : "value2"]);
auto content2 = post("https://httpbin.org/post", [1,2,3,4]);
Returns:
URLが指すリソースの内容を含むT[]範囲。
See Also:
T[] put(Conn = AutoProtocol, T = char, PutUnit)(const(char)[] url, const(PutUnit)[] putData, Conn conn = Conn())
if (isCurlConn!Conn && (is(T == char) || is(T == ubyte)));
HTTP/FTPにコンテンツを置く。
Parameters:
const(char)[] url 置くリソース
const(PutUnit)[] putData リクエストの本文として送信するデータ。任意の型の配列 任意の型の配列が受け入れられ、送信前に "ubyte[]"にキャストされる。 にキャストされてから送信される。
Conn conn FTP や HTTP などのコネクションを使用する。デフォルトの AutoProtocol は 接続型を推測し、この呼び出しのためだけに新しいインスタンスを作成する。
テンプレート・パラメータT は、返す型を指定する。指定可能な値は以下のとおりである。 char[] またはubyte[] を返すには、char およびubyte を指定する。 char を求める場合、コンテンツは接続文字セットから変換される。 (HTTP応答ヘッダーまたはFTP接続プロパティで指定される。どちらもデフォルトではISO-8859-1)からUTF-8に変換される。 からUTF-8に変換される。

例:

import std.net.curl;
auto content = put("https://httpbin.org/put",
                     "Putting this data");

Returns:
URLが指すリソースの内容を含むT[]範囲。
See Also:
void del(Conn = AutoProtocol)(const(char)[] url, Conn conn = Conn())
if (isCurlConn!Conn);
HTTP/FTPの削除内容。
Parameters:
const(char)[] url 削除するリソース
Conn conn FTPやHTTPなどの接続を使用する。デフォルトのAutoProtocolは は接続型を推測し、この呼び出しのためだけに新しいインスタンスを作成する。

例:

import std.net.curl;
del("https://httpbin.org/delete");

See Also:
T[] options(T = char)(const(char)[] url, HTTP conn = HTTP())
if (is(T == char) || is(T == ubyte));
HTTPオプションのリクエスト。
Parameters:
const(char)[] url リソースは
HTTP conn 接続を呼び出す。デフォルトのAutoProtocolは は接続型を推測し、この呼び出しのためだけに新しいインスタンスを作成する。
テンプレート・パラメータT は、返す型を指定する。指定可能な値は以下のとおりである。 は、charubyte で、char[] またはubyte[] を返す。

例:

import std.net.curl;
auto http = HTTP();
options("https://httpbin.org/headers", http);
writeln("Allow set to " ~ http.responseHeaders["Allow"]);

Returns:
URL が指すリソースのオプションを含む T[] の範囲。
See Also:
T[] trace(T = char)(const(char)[] url, HTTP conn = HTTP())
if (is(T == char) || is(T == ubyte));
HTTPトレースリクエスト。
Parameters:
const(char)[] url リソースにトレースコールをかける。
HTTP conn FTPやHTTPなどの接続を使用する。デフォルトのAutoProtocolは は接続型を推測し、この呼び出しのためだけに新しいインスタンスを作成する。
テンプレート・パラメータT は、返す型を指定する。指定可能な値は以下のとおりである。 は、charubyte で、char[] またはubyte[] を返す。

例:

import std.net.curl;
trace("https://httpbin.org/headers");

Returns:
URL が指すリソースのトレース情報を含む T[] の範囲。
See Also:
T[] connect(T = char)(const(char)[] url, HTTP conn = HTTP())
if (is(T == char) || is(T == ubyte));
HTTP接続リクエスト。
Parameters:
const(char)[] url リソースは
HTTP conn 使用するHTTP接続
テンプレート・パラメータT は、返す型を指定する。指定可能な値 はcharubyte で、char[] またはubyte[] を返す。

例:

import std.net.curl;
connect("https://httpbin.org/headers");

Returns:
URLの指すリソースの接続情報を含むT[]範囲。
See Also:
T[] patch(T = char, PatchUnit)(const(char)[] url, const(PatchUnit)[] patchData, HTTP conn = HTTP())
if (is(T == char) || is(T == ubyte));
HTTPパッチの内容。
Parameters:
const(char)[] url パッチを当てるリソース
const(PatchUnit)[] patchData リクエストの本文として送信するデータ。任意の型の配列 を送信する前に "ubyte[]"にキャストされる。 にキャストされてから送信される。
HTTP conn 使用するHTTP接続
テンプレート・パラメータT は、返す型を指定する。指定可能な値 はcharubyte で、char[] またはubyte[] を返す。

例:

auto http = HTTP();
http.addRequestHeader("Content-Type", "application/json");
auto content = patch("https://httpbin.org/patch", `{"title": "Patched Title"}`, http);

Returns:
URLが指すリソースの内容を含むT[]範囲。
See Also:
auto byLine(Conn = AutoProtocol, Terminator = char, Char = char)(const(char)[] url, KeepTerminator keepTerminator = No.keepTerminator, Terminator terminator = '\n', Conn conn = Conn())
if (isCurlConn!Conn && isSomeChar!Char && isSomeChar!Terminator);
HTTP/FTPは、行の範囲としてコンテンツをフェッチする。
リクエストが完了すると、行の範囲が返される。メソッドまたは メソッドやその他のリクエスト・プロパティをカスタマイズしたい場合は、"@property"を設定する。 connパラメータ を、これらのプロパティが設定された HTTP/FTP インスタンスに設定する。

例:

import std.net.curl, std.stdio;
foreach (line; byLine("dlang.org"))
    writeln(line);

Parameters:
const(char)[] url からコンテンツを受信する url
KeepTerminator keepTerminator Yes.keepTerminatorシグナルは、行の終端を を返す。
Terminator terminator 行を終了する文字
Conn conn HTTPやFTPなど、使用する接続。
Returns:
Char[]の範囲と、URLでポインタされたリソースの内容。
auto byChunk(Conn = AutoProtocol)(const(char)[] url, size_t chunkSize = 1024, Conn conn = Conn())
if (isCurlConn!Conn);
HTTP/FTPは、チャンクの範囲としてコンテンツをフェッチする。
リクエストが完了すると、チャンクの範囲が返される。メソッドまたは その他のリクエストのプロパティをカスタマイズする場合は、"@property" パラメータを設定する。 connパラメータ を、これらのプロパティが設定された HTTP/FTP インスタンスに設定する。

例:

import std.net.curl, std.stdio;
foreach (chunk; byChunk("dlang.org", 100))
    writeln(chunk); // チャンクはubyte[100]である

Parameters:
const(char)[] url コンテンツを受け取るURL
size_t chunkSize 各チャンクのサイズ
Conn conn 使用する接続(HTTPまたはFTPなど)。
Returns:
ubyte[chunkSize]の範囲と、URLによってポインタされたリソースの内容。
auto byLineAsync(Conn = AutoProtocol, Terminator = char, Char = char, PostUnit)(const(char)[] url, const(PostUnit)[] postData, KeepTerminator keepTerminator = No.keepTerminator, Terminator terminator = '\n', size_t transmitBuffers = 10, Conn conn = Conn())
if (isCurlConn!Conn && isSomeChar!Char && isSomeChar!Terminator);

auto byLineAsync(Conn = AutoProtocol, Terminator = char, Char = char)(const(char)[] url, KeepTerminator keepTerminator = No.keepTerminator, Terminator terminator = '\n', size_t transmitBuffers = 10, Conn conn = Conn());
HTTP/FTPは、非同期に行の範囲としてコンテンツをフェッチする。
行の範囲は即座に返され、行をフェッチするリクエストは別のスレッドで実行される。 行をフェッチするリクエストは別のスレッドで実行される。メソッドや他のリクエスト プロパティをカスタマイズする場合は、パラメータに connパラメータに HTTP/FTPインスタンスを設定する。
もし postDataがnullでない場合、HTTPリクエストのメソッドはpost に設定される。 リクエストに設定される。
バックグラウンドスレッドは、ネットワークからのデータ受信を停止する前に、transmitBuffers行数までバッファリングする。 までバッファリングする。メインスレッドが バッファを解放し、バックグラウンド・スレッドがネットワークからより多くのデータを受信できるようにする。 がネットワークからより多くのデータを受信できるようにする。
データが利用可能でない場合、メインスレッドが範囲にアクセスすると、データが利用可能になるまでブロックされる。 ブロックされる。wait(Duration) この例外は のメソッドだ。 LineInputRange.このメソッドは 指定された時間待機し、データが利用可能であればtrueを返す。

例:

import std.net.curl, std.stdio;
// バックグラウンドでいくつかのページを取得する
auto range1 = byLineAsync("www.google.com");
auto range2 = byLineAsync("www.wikipedia.org");
foreach (line; byLineAsync("dlang.org"))
    writeln(line);

// すでにバックグラウンドで取得され、準備が整っている行がある
foreach (line; range1) writeln(line);
foreach (line; range2) writeln(line);
import std.net.curl, std.stdio;
// バックグラウンド・スレッドで行を取得し、メイン・スレッドで
// 行が到着するまで2秒間待つ。
auto range3 = byLineAsync("dlang.com");
if (range3.wait(dur!"seconds"(2)))
    writeln(range3.front);
else
    writeln("No line received after 2 seconds!");

Parameters:
const(char)[] url コンテンツを受け取る URL
const(PostUnit)[] postData HTTPポストへのデータ
KeepTerminator keepTerminator Yes.keepTerminatorシグナルは、行終端を 範囲の行の一部として返される。
Terminator terminator 行を終了する文字
size_t transmitBuffers 非同期にバッファリングされる行数
Conn conn HTTPやFTPなど、使用する接続。
Returns:
Char[]の範囲。 URL。
auto byChunkAsync(Conn = AutoProtocol, PostUnit)(const(char)[] url, const(PostUnit)[] postData, size_t chunkSize = 1024, size_t transmitBuffers = 10, Conn conn = Conn())
if (isCurlConn!Conn);

auto byChunkAsync(Conn = AutoProtocol)(const(char)[] url, size_t chunkSize = 1024, size_t transmitBuffers = 10, Conn conn = Conn())
if (isCurlConn!Conn);
HTTP/FTPは、コンテンツを非同期にチャンクの範囲としてフェッチする。
チャンクの範囲は即座に返され、チャンクをフェッチするリクエストは別のスレッドで実行される。 チャンクをフェッチするリクエストは別のスレッドで実行される。メソッドや他のリクエスト プロパティをカスタマイズする場合は、パラメータに connパラメータに HTTP/FTPインスタンスで設定する。
もし postDataがnullでない場合、HTTPリクエストのメソッドはpost に設定される。 リクエストに設定される。
バックグラウンドスレッドは、ネットワークからのデータ受信を停止する前に、transmitBuffersのチャンク数までバッファリングする。 までバッファリングする。メインスレッドが 範囲からチャンクを読み出すと、バッファが解放され、バックグラウンド・スレッドがネットワークからより多くのデータを受信できるようになる。 スレッドがネットワークからより多くのデータを受信できるようにする。
データが利用可能でない場合、メインスレッドが範囲にアクセスすると、データが利用可能になるまでブロックされる。 ブロックされる。この例外はwait(Duration) メソッドである。 ChunkInputRange.このメソッドは、指定された 時間待ち、データが利用可能になれば真を返す。

例:

import std.net.curl, std.stdio;
// バックグラウンドでいくつかのページを取得する
auto range1 = byChunkAsync("www.google.com", 100);
auto range2 = byChunkAsync("www.wikipedia.org");
foreach (chunk; byChunkAsync("dlang.org"))
    writeln(chunk); // チャンクはubyte[100]である

// チャンクはすでにバックグラウンドでフェッチされ、準備ができている
foreach (chunk; range1) writeln(chunk);
foreach (chunk; range2) writeln(chunk);
import std.net.curl, std.stdio;
// バックグラウンド・スレッドで行を取得し、メイン・スレッドで
// 行が到着するまで2秒間待つ。
auto range3 = byChunkAsync("dlang.com", 10);
if (range3.wait(dur!"seconds"(2)))
    writeln(range3.front);
else
    writeln("No chunk received after 2 seconds!");

Parameters:
const(char)[] url コンテンツを受け取る URL
const(PostUnit)[] postData HTTPポストするデータ
size_t chunkSize チャンクのサイズ
size_t transmitBuffers 非同期にバッファリングされるチャンクの数
Conn conn 使用する接続(HTTPやFTPなど)。
Returns:
ubyte[chunkSize]の範囲。 の範囲。
struct HTTP;
HTTPクライアント機能。

カスタムデータレシーバで取得する:

import std.net.curl, std.stdio;

auto http = HTTP("https://dlang.org");
http.onReceiveHeader =
    (in char[] key, in char[] value) { writeln(key ~ ": " ~ value); };
http.onReceive = (ubyte[] data) { /+ ドロップ +/ return data.length; };
http.perform();
データ送信者と一緒に置く:
import std.net.curl, std.stdio;

auto http = HTTP("https://dlang.org");
auto msg = "Hello world";
http.contentLength = msg.length;
http.onSend = (void[] data)
{
    auto m = cast(void[]) msg;
    size_t len = m.length > data.length ? data.length : m.length;
    if (len == 0) return len;
    data[0 .. len] = m[0 .. len];
    msg = msg[len..$];
    return len;
};
http.perform();
進歩を追跡する:
import std.net.curl, std.stdio;

auto http = HTTP();
http.method = HTTP.Method.get;
http.url = "http://upload.wikimedia.org/wikipedia/commons/" ~
           "5/53/Wikipedia-logo-en-big.png";
http.onReceive = (ubyte[] data) { return data.length; };
http.onProgress = (size_t dltotal, size_t dlnow,
                   size_t ultotal, size_t ulnow)
{
    writeln("Progress ", dltotal, ", ", dlnow, ", ", ultotal, ", ", ulnow);
    return 0;
};
http.perform();

See Also:
alias AuthMethod = etc.c.curl.CurlAuth;
に等しい認証方法。 etc.c.curl.CurlAuth
alias TimeCond = etc.c.curl.CurlTimeCond;
のエイリアスとして時間条件を列挙する。 etc.c.curl.CurlTimeCond
static HTTP opCall(const(char)[] url);
urlをパラメータとするコンストラクタ。
static HTTP opCall();
HTTP dup();
CurlCode perform(ThrowOnError throwOnError = Yes.throwOnError);
httpリクエストを実行する。
HTTPクライアントがセットアップされ、場合によってはコールバックが割り当てられた後 perform()メソッドは リクエストの実行を開始する。
Parameters:
ThrowOnError throwOnError エラー時に例外をスローするか、CurlCode を返すか。
@property void url(const(char)[] url);
リソースの場所を指定するURL。
@property void caInfo(const(char)[] caFile);
SSLピア検証に使用するCA証明書バンドルファイルを設定する
alias requestPause = etc.c.curl.CurlReadFunc.pause;
リクエストを一時停止するためにonSend/onReceive デリゲートから返す値。 リクエストを一時停止する
alias requestAbort = etc.c.curl.CurlReadFunc.abort;
リクエストを中止するためにonSendデリゲートから返す値
@property bool isStopped();
インスタンスが停止している場合は真。停止したインスタンスは使えない。
void shutdown();
このインスタンスを停止して無効にする。
@property void verbose(bool on);
verboseを設定する。 リクエスト情報を標準エラー出力する。
@property void dataTimeout(Duration d);
コネクションのアクティビティのタイムアウトを設定する。
@property void operationTimeout(Duration d);
操作が許可される最大時間を設定する。 これには、DNS解決、接続、データ転送などが含まれる。
@property void connectTimeout(Duration d);
接続のタイムアウトを設定する。
@property void proxy(const(char)[] host);
プロキシ
@property void proxyPort(ushort port);
プロキシポート
alias CurlProxy = etc.c.curl.CurlProxy;
プロキシの型
@property void proxyType(CurlProxy type);
プロキシ型
@property void dnsTimeout(Duration d);
DNSルックアップのタイムアウト。
@property void netInterface(const(char)[] i);

@property void netInterface(const(ubyte)[4] i);

@property void netInterface(InternetAddress i);
使用するネットワーク・インターフェースをインターフェースのIPで指定する。

例:

theprotocol.netInterface = "192.168.1.32";
theprotocol.netInterface = [ 192, 168, 1, 32 ];

@property void localPort(ushort port);
使用するローカル発信ポートを設定する。
Parameters:
ushort port 最初に使用する発信ポート番号を設定する。
@property void localPortRange(ushort range);
使用するローカル発信ポート範囲を設定する。 これは localPort プロパティと併用できる。
Parameters:
ushort range 最初のポートが占有されている場合、この数の ポート番号の転送を試みる。
@property void tcpNoDelay(bool on);
tcp no-delay socketオプションのオン/オフを設定する。

以下を参照のこと。 nodelayを参照のこと。

void setAuthentication(const(char)[] username, const(char)[] password, const(char)[] domain = "");
認証のために、ユーザー名、パスワード、オプションでドメインを設定する。 を設定する。
プロトコルによっては認証が必要な場合もある。この 関数を使用する。
Parameters:
const(char)[] username ユーザー名
const(char)[] password パスワード
const(char)[] domain は NTLM 認証にのみ使用され、NTLM ドメイン名に設定される。 ユーザ名
void setProxyAuthentication(const(char)[] username, const(char)[] password);
プロキシ認証用のユーザ名とパスワードを設定する。
Parameters:
const(char)[] username ユーザ名
const(char)[] password パスワード
@property void onSend(size_t delegate(void[]) callback);
送信データが必要になったときに呼び出されるイベントハンドラ。イベントハンドラ void[] の長さは、送信可能な最大バイト数を指定する。 を指定する。
Returns:
コールバックは、バッファが満たされ、送信準備ができた要素の数を返す。 の要素数を返す。 現在のリクエストを中止するために、特別な値.abortRequest を返すことができる。 を返すことができる。 特別な値.pauseRequest は、現在のリクエストを一時停止するために返すことができる。 を返すことができる。

例:

import std.net.curl;
string msg = "Hello world";
auto client = HTTP("dlang.org");
client.onSend = delegate size_t(void[] data)
{
    auto m = cast(void[]) msg;
    size_t length = m.length > data.length ? data.length : m.length;
    if (length == 0) return 0;
    data[0 .. length] = m[0 .. length];
    msg = msg[length..$];
    return length;
};
client.perform();

@property void onReceive(size_t delegate(ubyte[]) callback);
受信データを受け取るイベント・ハンドラ。受信データ を必ずコピーすること。 を必ずコピーすること。
Returns:
コールバックは、読み込んだ受信バイトを返す。配列全体が でない場合、リクエストは中止される。 現在のリクエストを一時停止するために、特別な値 .pauseRequest を返すことができる。 を返すことができる。

例:

import std.net.curl, std.stdio, std.conv;
auto client = HTTP("dlang.org");
client.onReceive = (ubyte[] data)
{
    writeln("Got data", to!(const(char)[])(data));
    return data.length;
};
client.perform();

@property void onProgress(int delegate(size_t dlTotal, size_t dlNow, size_t ulTotal, size_t ulNow) callback);
アップロード/ダウンロードの進捗を通知するために呼び出されるイベントハンドラを登録する。 イベントハンドラを登録する。

コールバックパラメータ

dlTotal ダウンロードする総バイト数
dlNow 現在ダウンロードされているバイト数
ulTotal アップロードする総バイト数
ulNow 現在アップロードされているバイト数
プロトコルを自動検出するためにURLを使用する場合に使用する接続型。 この構造体は、高レベル API を呼び出す際の接続パラメータのプレースホルダとして使用される。 を呼び出す際に接続パラメータのプレースホルダとして使用され、 接続型 (HTTP/FTP) は URL パラメータを調べることで推測される。 接続タイプ(HTTP/FTP)はURLパラメータを検査することで推測される。 プロトコルを推測するためのルールは以下のとおりである: 1、URLがftp://、ftps://、またはftpで始まる場合、FTP接続が想定される。 2、そうでなければHTTP接続。

コールバックの戻り値 0を返すと成功、0以外を返すと を返す。

例:

import std.net.curl, std.stdio;
auto client = HTTP("dlang.org");
client.onProgress = delegate int(size_t dl, size_t dln, size_t ul, size_t uln)
{
    writeln("Progress: downloaded ", dln, " of ", dl);
    writeln("Progress: uploaded ", uln, " of ", ul);
    return 0;
};
client.perform();

void clearRequestHeaders();
すべての送信ヘッダーを消去する。
void addRequestHeader(const(char)[] name, const(char)[] value);
ヘッダーを追加する:何か怪しい "などのヘッダーを追加する。
ヘッダーを削除する機能はない。ヘッダーを削除する。 clearRequestHeaders を実行し、代わりに必要なヘッダーを設定する。

例:

import std.net.curl;
auto client = HTTP();
client.addRequestHeader("X-Custom-ABC", "This is the custom value");
auto content = get("dlang.org", client);

static @property string defaultUserAgent();
リクエストと共に送信されるデフォルトの"User-Agent"値。 これは、"phobos-std.net.curl/PHOBOS_VERSION (libcurl/CURL_VERSION)" という形式を持つ。
void setUserAgent(const(char)[] userAgent);
ユーザーエージェントリクエストヘッダーフィールドの値を設定する。
デフォルトでは、リクエストの"User-Agent" フィールドは defaultUserAgentに設定される。 setUserAgentフィールドが設定される。 を渡す。 空文字列を渡すと、"User-Agent"フィールドを表示しない。
CurlCode getTiming(CurlInfo timing, ref double val);
で定義されている様々なタイミングを取得する。 etc.c.curl.CurlInfo. この値は、戻り値がetc.c.curl.CurlError.ok と等しい場合にのみ使用可能である。
Parameters:
CurlInfo timing で定義されたタイミングのいずれかに等しい場合にのみ使用できる。 etc.c.curl.CurlInfo. 値は以下の通りである: etc.c.curl.CurlInfo.namelookup_time, etc.c.curl.CurlInfo.connect_time, etc.c.curl.CurlInfo.pretransfer_time, etc.c.curl.CurlInfo.starttransfer_time, etc.c.curl.CurlInfo.redirect_time, etc.c.curl.CurlInfo.appconnect_time, etc.c.curl.CurlInfo.total_time.
double val は、問い合わせたタイミングの実際の値である。
Returns:
操作のリターンコード。valに格納されている値。 に格納された値は、戻り値がetc.c.curl.CurlInfo.ok の場合にのみ使用される。

例:

import std.net.curl;
import etc.c.curl : CurlError, CurlInfo;

auto client = HTTP("dlang.org");
client.perform();

double val;
CurlCode code;

code = client.getTiming(CurlInfo.namelookup_time, val);
assert(code == CurlError.ok);

@property string[string] responseHeaders();
成功したレスポンスから読み取ったヘッダー。
@property void method(Method m);

@property Method method();
使用されたHTTPメソッド。
@property StatusLine statusLine();
最後のレスポンスのHTTPステータス行。1回の呼び出しで を1回呼び出すと、リダイレクトのために複数のリクエストになる。
void setCookie(const(char)[] cookie);
例えば、"name1=value1;name2=value2"のように。
void setCookieJar(const(char)[] path);
クッキー・ジャーを読み込む/格納するファイル・パスを設定する。
void flushCookieJar();
クッキー・ジャーをディスクにフラッシュする。
void clearSessionCookies();
セッション・クッキーを消去する。
void clearAllCookies();
すべてのクッキーを消去する。
void setTimeCondition(HTTP.TimeCond cond, SysTime timestamp);
リクエストに時間条件を設定する。
Parameters:
HTTP.TimeCond cond CurlTimeCond.{none,ifmodsince,ifunmodsince,lastmod}
SysTime timestamp 条件のタイムスタンプ
RFC2616 セクション14.25
@property void postData(const(void)[] data);
onSendコールバックを使用しない場合にポストするデータを指定する。
データはライブラリによってコピーされない。 Content-Typeはデフォルトで application/octet-streamとなる。 このメソッドによってデータが変換されたりエンコードされたりすることはない。 メソッドでは変換もエンコードもされない。

例:

import std.net.curl, std.stdio, std.conv;
auto http = HTTP("http://www.mydomain.com");
http.onReceive = (ubyte[] data) { writeln(to!(const(char)[])(data)); return data.length; };
http.postData = [1,2,3,4,5];
http.perform();

@property void postData(const(char)[] data);
onSendコールバックを使用しない場合に投稿するデータを指定する。
データはライブラリによってコピーされない。 Content-Typeのデフォルトは text/plainとなる。 このメソッドによってデータが変換されたりエンコードされたりすることはない。

例:

import std.net.curl, std.stdio, std.conv;
auto http = HTTP("http://www.mydomain.com");
http.onReceive = (ubyte[] data) { writeln(to!(const(char)[])(data)); return data.length; };
http.postData = "The quick....";
http.perform();

void setPostData(const(void)[] data, string contentType);
onSendコールバックを使用しない場合に投稿するデータを指定する。 ユーザー指定の Content-Type。
Parameters:
const(void)[] data 投稿するデータ。
string contentType 例えば "text/plain"や"application/octet-stream "などである。 「application/octet-stream "などである。こちらも参照のこと: ウィキペディアのインターネットメディア型も参照のこと。
import std.net.curl;
auto http = HTTP("http://onlineform.example.com");
auto data = "app=login&username=bob&password=s00perS3kret";
http.setPostData(data, "application/x-www-form-urlencoded");
http.onReceive = (ubyte[] data) { return data.length; };
http.perform();
@property void onReceiveHeader(void delegate(in char[] key, in char[] value) callback);
受信ヘッダを受け取るイベントハンドラを設定する。
コールバックはヘッダーフィールドのキーと値をパラメータとして受け取る。この const(char)[] 配列は、デリゲートが返された後は無効となる。

例:

import std.net.curl, std.stdio, std.conv;
auto http = HTTP("dlang.org");
http.onReceive = (ubyte[] data) { writeln(to!(const(char)[])(data)); return data.length; };
http.onReceiveHeader = (in char[] key, in char[] value) { writeln(key, " = ", value); };
http.perform();

@property void onReceiveStatusLine(void delegate(StatusLine) callback);
StatusLineを受信するたびにコールバックを返す。
を呼び出すたびに、複数のコールバックが実行される可能性がある。 perform() を呼び出すたびに複数のコールバックが行われることに注意。
See Also:
@property void contentLength(ulong len);
コンテンツを持つリクエスト(例: POST/PUT)を使用し、チャンク転送を使用しない場合、 コンテンツの長さをバイト数で表す。 例:POST/PUTを使用し、チャンク転送を使用しない。これは "Content-Length"ヘッダーとして設定される。 ulong.maxに設定するとチャンク転送にリセットされる。
@property void authenticationMethod(AuthMethod authMethod);
で指定されている認証方法。 AuthMethod.
@property void maxRedirects(uint maxRedirs);
locationヘッダを使用した最大許容リダイレクト数を設定する。 無限の場合は "uint.max"とする。
enum Method: int;
head
get
post
put
del
options
trace
connect
patch
struct StatusLine;
HTTPステータス行、つまりHTTPレスポンスで返される最初の行。
認証やリダイレクトが行われた場合、ステータスは最後に受信した レスポンスのものになる。 である。
ushort majorVersion;
メジャーHTTPバージョン、すなわちHTTP/1.0の1。
ushort minorVersion;
マイナーHTTPバージョン。HTTP/1.0では0。
ushort code;
HTTPステータス行コード。
string reason;
HTTPステータス行の理由文字列。
@safe void reset();
このステータス行をリセットする。
const string toString();
struct FTP;
FTPクライアントの機能。
See Also:
static FTP opCall(const(char)[] url);
指定されたURLにFTPアクセスする。
static FTP opCall();
FTP dup();
CurlCode perform(ThrowOnError throwOnError = Yes.throwOnError);
設定されたとおりに ftp リクエストを実行する。
FTPクライアントが設定され、場合によってはコールバックが割り当てられた後、 perform() メソッドがサーバーとの実際の通信を開始する。 サーバーとの実際の通信を開始する。
Parameters:
ThrowOnError throwOnError エラー時に例外をスローするか、CurlCode を返すか。
@property void url(const(char)[] url);
リソースの場所を指定する URL。
alias requestPause = etc.c.curl.CurlReadFunc.pause;
リクエストを一時停止するためにonSend/onReceive デリゲートから返す値。 リクエストを一時停止する
alias requestAbort = etc.c.curl.CurlReadFunc.abort;
リクエストを中止するために onSend デリゲートから返す値
@property bool isStopped();
インスタンスが停止している場合は真。停止したインスタンスは使えない。
void shutdown();
このインスタンスを停止して無効にする。
@property void verbose(bool on);
verboseを設定する。 リクエスト情報を標準エラー出力する。
@property void dataTimeout(Duration d);
コネクションのアクティビティのタイムアウトを設定する。
@property void operationTimeout(Duration d);
操作が許可される最大時間を設定する。 これには、DNS解決、接続、データ転送などが含まれる。
@property void connectTimeout(Duration d);
接続のタイムアウトを設定する。
@property void proxy(const(char)[] host);
プロキシ
@property void proxyPort(ushort port);
プロキシポート
alias CurlProxy = etc.c.curl.CurlProxy;
プロキシの型
@property void proxyType(CurlProxy type);
プロキシ型
@property void dnsTimeout(Duration d);
DNSルックアップのタイムアウト。
@property void netInterface(const(char)[] i);

@property void netInterface(const(ubyte)[4] i);

@property void netInterface(InternetAddress i);
使用するネットワーク・インターフェースをインターフェースのIPで指定する。

例:

theprotocol.netInterface = "192.168.1.32";
theprotocol.netInterface = [ 192, 168, 1, 32 ];

@property void localPort(ushort port);
使用するローカル発信ポートを設定する。
Parameters:
ushort port 最初に使用する発信ポート番号を設定する。
@property void localPortRange(ushort range);
使用するローカル発信ポート範囲を設定する。 これは localPort プロパティと併用できる。
Parameters:
ushort range 最初のポートが占有されている場合、この数の ポート番号の転送を試みる。
@property void tcpNoDelay(bool on);
tcp no-delay socketオプションのオン/オフを設定する。

以下を参照のこと。 nodelayを参照のこと。

void setAuthentication(const(char)[] username, const(char)[] password, const(char)[] domain = "");
認証のために、ユーザー名、パスワード、オプションでドメインを設定する。 を設定する。
プロトコルによっては認証が必要な場合もある。この 関数を使用する。
Parameters:
const(char)[] username ユーザー名
const(char)[] password パスワード
const(char)[] domain は NTLM 認証にのみ使用され、NTLM ドメイン名に設定される。 の名前に設定される。
void setProxyAuthentication(const(char)[] username, const(char)[] password);
プロキシ認証のユーザー名とパスワードを設定する。
Parameters:
const(char)[] username ユーザー名
const(char)[] password パスワード
@property void onSend(size_t delegate(void[]) callback);
送信データが必要になったときに呼び出されるイベントハンドラ。イベントハンドラ void[] の長さは、送信可能な最大バイト数を指定する。 を指定する。
Returns:
コールバックは、バッファが満たされ、送信準備ができた要素の数を返す。 の要素数を返す。 現在のリクエストを中止するために、特別な値.abortRequest を返すことができる。 を返すことができる。 特別な値.pauseRequest は、現在のリクエストを一時停止するために返すことができる。 を返すことができる。
@property void onReceive(size_t delegate(ubyte[]) callback);
受信データを受け取るイベントハンドラ。必ず を必ずコピーすること。 を必ずコピーすること。
Returns:
コールバックは、読み込んだ受信バイトを返す。配列全体が でない場合、リクエストは中止される。 現在のリクエストを一時停止するために、特別な値 .pauseRequest を返すことができる。 を返すことができる。
@property void onProgress(int delegate(size_t dlTotal, size_t dlNow, size_t ulTotal, size_t ulNow) callback);
アップロード/ダウンロードの進捗を通知するために呼び出されるイベントハンドラ。

コールバックパラメータ

dlTotal ダウンロードする総バイト数
dlNow 現在ダウンロードされているバイト数
ulTotal アップロードする総バイト数
ulNow 現在アップロードされているバイト数
プロトコルを自動検出するためにURLを使用する場合に使用する接続型。 この構造体は、高レベル API を呼び出す際の接続パラメータのプレースホルダとして使用される。 を呼び出す際に接続パラメータのプレースホルダとして使用され、 接続型 (HTTP/FTP) は URL パラメータを調べることで推測される。 URL パラメータを検査することで推測される。 プロトコルを推測するためのルールは以下のとおりである: 1、URLがftp://、ftps://、またはftpで始まる場合、FTP接続が想定される。 2、そうでなければHTTP接続。

コールバックの戻り値 コールバックから0を返すと成功のシグナルとなり、0以外を返すと を返す。

void clearCommands();
ftpサーバーに送信するすべてのコマンドをクリアする。
void addCommand(const(char)[] command);
ftpサーバーに送信するコマンドを追加する。
コマンドを削除する機能はない。を実行する。 clearCommandsを実行し で必要なコマンドを設定する。

例:

import std.net.curl;
auto client = FTP();
client.addCommand("RNFR my_file.txt");
client.addCommand("RNTO my_renamed_file.txt");
upload("my_file.txt", "ftp.digitalmars.com", client);

@property void encoding(string name);

@property string encoding();
接続エンコード。デフォルトはISO-8859-1。
@property void contentLength(ulong len);
ftp データのバイト数。
CurlCode getTiming(CurlInfo timing, ref double val);
で定義されている様々なタイミングを取得する。 etc.c.curl.CurlInfo. この値は、戻り値がetc.c.curl.CurlError.ok に等しい場合にのみ使用できる。
Parameters:
CurlInfo timing で定義されたタイミングのいずれかに等しい場合にのみ使用できる。 etc.c.curl.CurlInfo. 値は以下の通りである: etc.c.curl.CurlInfo.namelookup_time, etc.c.curl.CurlInfo.connect_time, etc.c.curl.CurlInfo.pretransfer_time, etc.c.curl.CurlInfo.starttransfer_time, etc.c.curl.CurlInfo.redirect_time, etc.c.curl.CurlInfo.appconnect_time, etc.c.curl.CurlInfo.total_time.
double val は、問い合わせたタイミングの実際の値である。
Returns:
操作のリターンコード。valに格納されている値。 に格納された値は、戻り値がetc.c.curl.CurlInfo.ok の場合にのみ使用される。

例:

import std.net.curl;
import etc.c.curl : CurlError, CurlInfo;

auto client = FTP();
client.addCommand("RNFR my_file.txt");
client.addCommand("RNTO my_renamed_file.txt");
upload("my_file.txt", "ftp.digitalmars.com", client);

double val;
CurlCode code;

code = client.getTiming(CurlInfo.namelookup_time, val);
assert(code == CurlError.ok);

struct SMTP;
基本的なSMTPプロトコルのサポート。

例:

import std.net.curl;

// SMTPSでメールを送信する
auto smtp = SMTP("smtps://smtp.gmail.com");
smtp.setAuthentication("from.addr@gmail.com", "password");
smtp.mailTo = ["<to.addr@gmail.com>"];
smtp.mailFrom = "<from.addr@gmail.com>";
smtp.message = "Example Message";
smtp.perform();

See Also:
static SMTP opCall(const(char)[] url);
SMTPサーバーのURLを設定する。
static SMTP opCall();
CurlCode perform(ThrowOnError throwOnError = Yes.throwOnError);
設定されたリクエストを実行する。
Parameters:
ThrowOnError throwOnError エラー時に例外をスローするか、CurlCode を返すか。
@property void url(const(char)[] url);
リソースの場所を指定するURL。
alias requestPause = etc.c.curl.CurlReadFunc.pause;
リクエストを一時停止するためにonSend/onReceive デリゲートから返す値。 リクエストを一時停止する
alias requestAbort = etc.c.curl.CurlReadFunc.abort;
リクエストを中止するために onSend デリゲートから返す値
@property bool isStopped();
インスタンスが停止している場合は真。停止したインスタンスは使えない。
void shutdown();
このインスタンスを停止して無効にする。
@property void verbose(bool on);
verboseを設定する。 リクエスト情報を標準エラー出力する。
@property void dataTimeout(Duration d);
コネクションのアクティビティのタイムアウトを設定する。
@property void operationTimeout(Duration d);
操作が許可される最大時間を設定する。 これには、DNS解決、接続、データ転送などが含まれる。
@property void connectTimeout(Duration d);
接続のタイムアウトを設定する。
@property void proxy(const(char)[] host);
プロキシ
@property void proxyPort(ushort port);
プロキシポート
alias CurlProxy = etc.c.curl.CurlProxy;
プロキシの型
@property void proxyType(CurlProxy type);
プロキシ型
@property void dnsTimeout(Duration d);
DNSルックアップのタイムアウト。
@property void netInterface(const(char)[] i);

@property void netInterface(const(ubyte)[4] i);

@property void netInterface(InternetAddress i);
使用するネットワーク・インターフェースをインターフェースのIPで指定する。

例:

theprotocol.netInterface = "192.168.1.32";
theprotocol.netInterface = [ 192, 168, 1, 32 ];

@property void localPort(ushort port);
使用するローカル発信ポートを設定する。
Parameters:
ushort port 最初に使用する発信ポート番号を設定する。
@property void localPortRange(ushort range);
使用するローカル発信ポート範囲を設定する。 これは localPort プロパティと併用できる。
Parameters:
ushort range 最初のポートが占有されている場合、この数の ポート番号の転送を試みる。
@property void tcpNoDelay(bool on);
tcp no-delay socketオプションのオン/オフを設定する。

以下を参照のこと。 nodelayを参照のこと。

void setAuthentication(const(char)[] username, const(char)[] password, const(char)[] domain = "");
認証のために、ユーザー名、パスワード、オプションでドメインを設定する。 を設定する。
プロトコルによっては認証が必要な場合もある。この 関数を使用する。
Parameters:
const(char)[] username ユーザー名
const(char)[] password パスワード
const(char)[] domain は NTLM 認証にのみ使用され、NTLM ドメイン名に設定される。 ユーザ名
void setProxyAuthentication(const(char)[] username, const(char)[] password);
プロキシ認証用のユーザ名とパスワードを設定する。
Parameters:
const(char)[] username ユーザ名
const(char)[] password パスワード
@property void onSend(size_t delegate(void[]) callback);
送信データが必要になったときに呼び出されるイベントハンドラ。イベントハンドラ void[] の長さは、送信可能な最大バイト数を指定する。 を指定する。
Returns:
コールバックは、バッファが満たされ、送信準備ができた要素の数を返す。 の要素数を返す。 現在のリクエストを中止するために、特別な値.abortRequest を返すことができる。 を返すことができる。 特別な値.pauseRequest は、現在のリクエストを一時停止するために返すことができる。 を返すことができる。
@property void onReceive(size_t delegate(ubyte[]) callback);
受信データを受け取るイベントハンドラ。必ず を必ずコピーすること。 を必ずコピーすること。
Returns:
コールバックは、読み込んだ受信バイトを返す。配列全体が でない場合、リクエストは中止される。 現在のリクエストを一時停止するために、特別な値 .pauseRequest を返すことができる。 を返すことができる。
@property void onProgress(int delegate(size_t dlTotal, size_t dlNow, size_t ulTotal, size_t ulNow) callback);
アップロード/ダウンロードの進捗を通知するために呼び出されるイベントハンドラ。

コールバックパラメータ

dlTotal ダウンロードする総バイト数
dlNow 現在ダウンロードされているバイト数
ulTotal アップロードする総バイト数
ulNow 現在アップロードされているバイト数
プロトコルを自動検出するためにURLを使用する場合に使用する接続型。 この構造体は、高レベル API を呼び出す際の接続パラメータのプレースホルダとして使用される。 を呼び出す際に接続パラメータのプレースホルダとして使用され、 接続型 (HTTP/FTP) は URL パラメータを調べることで推測される。 URL パラメータを検査することで推測される。 プロトコルを推測するためのルールは以下のとおりである: 1、URLがftp://、ftps://、またはftpで始まる場合、FTP接続が想定される。 2、そうでなければHTTP接続。

コールバックの戻り値 コールバックから0を返すと成功のシグナルとなり、0以外を返すと を返す。

@property void mailFrom()(const(char)[] sender);
送信者のメールアドレスのセッター。
void mailTo()(const(char)[][] recipients...);
受信者のメールアドレスのセッター
@property void message(string msg);
メッセージ本文を設定する。
class CurlException: object.Exception;
std.net.curl関数のエラー時にスローされる例外。
pure nothrow @safe this(string msg, string file = __FILE__, size_t line = __LINE__, Throwable next = null);
Parameters:
string msg 例外のメッセージ。
string file 例外が発生したファイル。
size_t line 例外が発生した行番号。
Throwable next 例外の連鎖の前の例外があれば、その例外。
class CurlTimeoutException: std.net.curl.CurlException;
std.net.curl関数のタイムアウトエラー時にスローされる例外。
pure nothrow @safe this(string msg, string file = __FILE__, size_t line = __LINE__, Throwable next = null);
Parameters:
string msg 例外のメッセージ。
string file 例外が発生したファイル。
size_t line 例外が発生した行番号。
Throwable next 例外の連鎖の前の例外があれば、その例外。
class HTTPStatusException: std.net.curl.CurlException;
HTTP リクエストが失敗したときにスローされる例外。
pure nothrow @safe this(int status, string msg, string file = __FILE__, size_t line = __LINE__, Throwable next = null);
Parameters:
int status HTTPステータス・コード。
string msg 例外のメッセージ。
string file 例外が発生したファイル。
size_t line 例外が発生した行番号。
Throwable next 例外の連鎖の前の例外があれば、その例外。
immutable int status;
HTTP ステータスコード
alias CurlCode = int;
に等しい。 etc.c.curl.CURLcode
alias ThrowOnError = std.typecons.Flag!"throwOnError".Flag;
エラー時に例外をスローするかどうかを指定するフラグ。
struct Curl;
プレーン C API を使用するよりも優れた libcurl とのインターフェイスを提供するラッパー。 libcurl への生のアクセスが必要な場合を除き、HTTP/FTP などの構造体を使用することを推奨する。 を使用することを推奨する。

警告 この構造体は、コールバックに内部ポインタを使用する。この構造体を移動またはコピーしない場合は のみをスタック上に確保すること。これは、Curl を他の関数に渡すときに で渡すことも意味する。そうでない場合は、常に ヒープ上に確保する。

void initialize();
作業用のCurlハンドルを作成してインスタンスを初期化する。
const @property bool stopped();
Curl dup();
このハンドルを複製する。
新しいハンドルには、複製元のハンドルと同じようにすべてのオプションが設定される。 に設定される。例外として、スレッド間で共有できないオプションはすべてリセットされる。 スレッド間で共有できないオプションはすべてリセットされる。 を新しいスレッドで安全に使用できる。
void shutdown();
このcurlインスタンスを停止して無効にする。

警告 onReceive などのコールバックハンドラの内部からこれをコールしないこと。

void pause(bool sendingPaused, bool receivingPaused);
転送を一時停止および継続する。
void set(CurlOption option, const(char)[] value);
文字列 curl オプションを設定する。
Parameters:
CurlOption option A etc.c.curl.CurlOptioncurlのドキュメントにある
const(char)[] value 文字列
void set(CurlOption option, long value);
長いcurlオプションを設定する。
Parameters:
CurlOption option A etc.c.curl.CurlOptioncurl ドキュメントにある
long value 長い
void set(CurlOption option, void* value);
void* curl オプションを設定する。
Parameters:
CurlOption option A etc.c.curl.CurlOptioncurl ドキュメントにある
void* value ポインタ
void clear(CurlOption option);
ポインタオプションをクリアする。
Parameters:
CurlOption option A etc.c.curl.CurlOptioncurlのドキュメントにある
void clearIfSupported(CurlOption option);
ポインタオプションをクリアする。基礎となる libcurl がそのオプションをサポートしていない場合は例外を発生させない。控えめに使用する。
Parameters:
CurlOption option A etc.c.curl.CurlOptioncurl ドキュメントにあるように
CurlCode perform(ThrowOnError throwOnError = Yes.throwOnError);
HTTP、FTPなど、事前に設定したとおりにcurlリクエストを実行する。 を実行する。
Parameters:
ThrowOnError throwOnError エラー時に例外をスローするか、CurlCodeを返すか。
CurlCode getTiming(CurlInfo timing, ref double val);
名前検索時間、合計時間、接続時間などの様々なタイミングを取得する。 タイミング カテゴリは、タイミング パラメータを介して渡される。 値は val に格納される。この値は、resが以下に等しい場合にのみ使用可能である。 etc.c.curl.CurlError.ok.
@property void onReceive(size_t delegate(InData) callback);
受信データを受け取るイベントハンドラ。
Parameters:
size_t delegate(InData) callback ubyte[] データを受け取るコールバック。 受信データを必ずコピーし、スライスを保存しないこと。 スライスを保存しない。
Returns:
コールバックは読み込んだ受信バイトを返す。配列全体が でない場合、リクエストは中止される。 現在のリクエストを一時停止するために、特別な値 HTTP.pauseRequest を返すことができる。 を返すことができる。

例:

import std.net.curl, std.stdio, std.conv;
Curl curl;
curl.initialize();
curl.set(CurlOption.url, "http://dlang.org");
curl.onReceive = (ubyte[] data) { writeln("Got data", to!(const(char)[])(data)); return data.length;};
curl.perform();

@property void onReceiveHeader(void delegate(in char[]) callback);
プロトコルでヘッダーを受信するイベントハンドラ ヘッダを使用する
Parameters:
void delegate(in char[]) callback ヘッダ文字列を受け取るコールバック。 コールバックが受信パラメータをコピーしていることを確認する。 バックエンドへの参照であり、変更される可能性があるからだ。 への参照であり、変更される可能性があるからだ。

例:

import std.net.curl, std.stdio;
Curl curl;
curl.initialize();
curl.set(CurlOption.url, "http://dlang.org");
curl.onReceiveHeader = (in char[] header) { writeln(header); };
curl.perform();

@property void onSend(size_t delegate(OutData) callback);
送信データが必要になったときに呼び出されるイベントハンドラ。
Parameters:
size_t delegate(OutData) callback void[] のバッファが満たされるコールバック。
Returns:
このコールバックは、バッファが満たされ、送信準備ができた要素の数を返す。 を返す。 現在のリクエストを中止するために、特別な値Curl.abortRequest を返すことができる。 を返すことができる。 特別な値Curl.pauseRequest は、現在のリクエストを一時停止するために返すことができる。 を返すことができる。

例:

import std.net.curl;
Curl curl;
curl.initialize();
curl.set(CurlOption.url, "http://dlang.org");

string msg = "Hello world";
curl.onSend = (void[] data)
{
    auto m = cast(void[]) msg;
    size_t length = m.length > data.length ? data.length : m.length;
    if (length == 0) return 0;
    data[0 .. length] = m[0 .. length];
    msg = msg[length..$];
    return length;
};
curl.perform();

@property void onSeek(CurlSeek delegate(long, CurlSeekPos) callback);
curlバックエンドが送信するデータをシークする必要があるときに呼び出されるイベントハンドラ が必要なときに呼び出されるイベントハンドラ。
Parameters:
CurlSeek delegate(long, CurlSeekPos) callback シークオフセットとシーク位置を受け取るコールバック。 etc.c.curl.CurlSeekPos
Returns:
コールバックは、シークの成功状態を返す。 etc.c.curl.CurlSeek

例:

import std.net.curl;
Curl curl;
curl.initialize();
curl.set(CurlOption.url, "http://dlang.org");
curl.onSeek = (long p, CurlSeekPos sp)
{
    return CurlSeek.cantseek;
};
curl.perform();

@property void onSocketOption(int delegate(curl_socket_t, CurlSockType) callback);
ネットソケットが作成されたが、まだ。 connect() を呼び出すイベントハンドラである。これにより ソケットオプションを設定することができる。
Parameters:
int delegate(curl_socket_t, CurlSockType) callback コールバックはソケットとソケット型を受け取る。 etc.c.curl.CurlSockType
Returns:
コールバックから0を返して成功を知らせ、1を返してエラーを知らせる を返し、curlにソケットをクローズさせる

例:

import std.net.curl;
Curl curl;
curl.initialize();
curl.set(CurlOption.url, "http://dlang.org");
curl.onSocketOption = delegate int(curl_socket_t s, CurlSockType t) { 
/+ 何かをする +/ };
curl.perform();

@property void onProgress(int delegate(size_t dlTotal, size_t dlNow, size_t ulTotal, size_t ulNow) callback);
アップロード/ダウンロードの進捗を通知するために呼び出されるイベントハンドラ。
Parameters:
int delegate(size_t dlTotal, size_t dlNow, size_t ulTotal, size_t ulNow) callback を受け取るコールバック、 現在ダウンロードされているバイト数、アップロードする合計バイト数、現在アップロードされている バイト)を受け取るコールバック。
Returns:
コールバックから0を返すと成功のシグナル、0以外を返すと失敗のシグナルとなる。 転送

例:

import std.net.curl, std.stdio;
Curl curl;
curl.initialize();
curl.set(CurlOption.url, "http://dlang.org");
curl.onProgress = delegate int(size_t dltotal, size_t dlnow, size_t ultotal, size_t ulnow)
{
    writeln("Progress: downloaded bytes ", dlnow, " of ", dltotal);
    writeln("Progress: uploaded bytes ", ulnow, " of ", ultotal);
    return 0;
};
curl.perform();