std.net.curl
注釈 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は byLineAsyncと byChunkAsync関数は非同期的に 与えられたリクエストを実行し、取得したコンテンツを範囲に出力する。 低レベルの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
クレジット この関数は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
, stringsaveToPath
, Connconn
= 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)(stringloadFromPath
, const(char)[]url
, Connconn
= 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
, Connconn
= 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
, HTTPconn
= HTTP())
if (is(T == char) || is(T == ubyte));
T[]post
(T = char)(const(char)[]url
, string[string]postDict
, HTTPconn
= 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[] を返すにはchar とubyte を指定する。 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
, Connconn
= 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
, Connconn
= 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
, HTTPconn
= HTTP())
if (is(T == char) || is(T == ubyte)); - HTTPオプションのリクエスト。Parameters:
const(char)[] url
リソースは HTTP conn
接続を呼び出す。デフォルトのAutoProtocolは は接続型を推測し、この呼び出しのためだけに新しいインスタンスを作成する。 テンプレート・パラメータT は、返す型を指定する。指定可能な値は以下のとおりである。 は、char とubyte で、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
, HTTPconn
= HTTP())
if (is(T == char) || is(T == ubyte)); - HTTPトレースリクエスト。Parameters:
const(char)[] url
リソースにトレースコールをかける。 HTTP conn
FTPやHTTPなどの接続を使用する。デフォルトのAutoProtocolは は接続型を推測し、この呼び出しのためだけに新しいインスタンスを作成する。 テンプレート・パラメータT は、返す型を指定する。指定可能な値は以下のとおりである。 は、char とubyte で、char[] またはubyte[] を返す。 例:
import std.net.curl; trace("https://httpbin.org/headers");
Returns:URL が指すリソースのトレース情報を含む T[] の範囲。See Also: - T[]
connect
(T = char)(const(char)[]url
, HTTPconn
= HTTP())
if (is(T == char) || is(T == ubyte)); - HTTP接続リクエスト。Parameters:
const(char)[] url
リソースは HTTP conn
使用するHTTP接続 テンプレート・パラメータT は、返す型を指定する。指定可能な値 はchar とubyte で、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
, HTTPconn
= HTTP())
if (is(T == char) || is(T == ubyte)); - HTTPパッチの内容。Parameters:
const(char)[] url
パッチを当てるリソース const(PatchUnit)[] patchData
リクエストの本文として送信するデータ。任意の型の配列 を送信する前に "ubyte[]"にキャストされる。 にキャストされてから送信される。 HTTP conn
使用するHTTP接続 テンプレート・パラメータT は、返す型を指定する。指定可能な値 はchar とubyte で、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
, KeepTerminatorkeepTerminator
= No.keepTerminator
, Terminatorterminator
= '\n', Connconn
= 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_tchunkSize
= 1024, Connconn
= 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
, KeepTerminatorkeepTerminator
= No.keepTerminator
, Terminatorterminator
= '\n', size_ttransmitBuffers
= 10, Connconn
= Conn())
if (isCurlConn!Conn && isSomeChar!Char && isSomeChar!Terminator);
autobyLineAsync
(Conn = AutoProtocol, Terminator = char, Char = char)(const(char)[]url
, KeepTerminatorkeepTerminator
= No.keepTerminator
, Terminatorterminator
= '\n', size_ttransmitBuffers
= 10, Connconn
= 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_tchunkSize
= 1024, size_ttransmitBuffers
= 10, Connconn
= Conn())
if (isCurlConn!Conn);
autobyChunkAsync
(Conn = AutoProtocol)(const(char)[]url
, size_tchunkSize
= 1024, size_ttransmitBuffers
= 10, Connconn
= 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
(ThrowOnErrorthrowOnError
= 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
(boolon
); - verboseを設定する。 リクエスト情報を標準エラー出力する。
- @property void
dataTimeout
(Durationd
); - コネクションのアクティビティのタイムアウトを設定する。
- @property void
operationTimeout
(Durationd
); - 操作が許可される最大時間を設定する。 これには、DNS解決、接続、データ転送などが含まれる。
- @property void
connectTimeout
(Durationd
); - 接続のタイムアウトを設定する。
- @property void
proxy
(const(char)[]host
); - プロキシ
参照 プロキシ
- @property void
proxyPort
(ushortport
); - プロキシポート
参照 プロキシポート
- alias
CurlProxy
= etc.c.curl.CurlProxy
; - プロキシの型
- @property void
proxyType
(CurlProxytype
); - プロキシ型
参照 を参照のこと。
- @property void
dnsTimeout
(Durationd
); - DNSルックアップのタイムアウト。
- @property void
netInterface
(const(char)[]i
);
@property voidnetInterface
(const(ubyte)[4]i
);
@property voidnetInterface
(InternetAddressi
); - 使用するネットワーク・インターフェースをインターフェースのIPで指定する。
例:
theprotocol.netInterface = "192.168.1.32"; theprotocol.netInterface = [ 192, 168, 1, 32 ];
- @property void
localPort
(ushortport
); - 使用するローカル発信ポートを設定する。Parameters:
ushort port
最初に使用する発信ポート番号を設定する。 - @property void
localPortRange
(ushortrange
); - 使用するローカル発信ポート範囲を設定する。 これは localPort プロパティと併用できる。Parameters:
ushort range
最初のポートが占有されている場合、この数の ポート番号の転送を試みる。 - @property void
tcpNoDelay
(boolon
); - 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
); - アップロード/ダウンロードの進捗を通知するために呼び出されるイベントハンドラを登録する。 イベントハンドラを登録する。
コールバックパラメータ
プロトコルを自動検出するためにURLを使用する場合に使用する接続型。 この構造体は、高レベル API を呼び出す際の接続パラメータのプレースホルダとして使用される。 を呼び出す際に接続パラメータのプレースホルダとして使用され、 接続型 (HTTP/FTP) は URL パラメータを調べることで推測される。 接続タイプ(HTTP/FTP)はURLパラメータを検査することで推測される。 プロトコルを推測するためのルールは以下のとおりである: 1、URLがftp://、ftps://、またはftpで始まる場合、FTP接続が想定される。 2、そうでなければHTTP接続。dlTotal
ダウンロードする総バイト数 dlNow
現在ダウンロードされているバイト数 ulTotal
アップロードする総バイト数 ulNow
現在アップロードされているバイト数 コールバックの戻り値 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
(CurlInfotiming
, ref doubleval
); - で定義されている様々なタイミングを取得する。 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
(Methodm
);
@property Methodmethod
(); - 使用された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.TimeCondcond
, SysTimetimestamp
); - リクエストに時間条件を設定する。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
, stringcontentType
); - 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
(ulonglen
); - コンテンツを持つリクエスト(例: POST/PUT)を使用し、チャンク転送を使用しない場合、 コンテンツの長さをバイト数で表す。 例:POST/PUTを使用し、チャンク転送を使用しない。これは "Content-Length"ヘッダーとして設定される。 ulong.maxに設定するとチャンク転送にリセットされる。
- @property void
authenticationMethod
(AuthMethodauthMethod
); - で指定されている認証方法。 AuthMethod.
- @property void
maxRedirects
(uintmaxRedirs
); - locationヘッダを使用した最大許容リダイレクト数を設定する。 無限の場合は "uint.max"とする。
- enum
Method
: int; - 標準のHTTPメソッドは: RFC2616 セクション5.1.1
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
(ThrowOnErrorthrowOnError
= 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
(boolon
); - verboseを設定する。 リクエスト情報を標準エラー出力する。
- @property void
dataTimeout
(Durationd
); - コネクションのアクティビティのタイムアウトを設定する。
- @property void
operationTimeout
(Durationd
); - 操作が許可される最大時間を設定する。 これには、DNS解決、接続、データ転送などが含まれる。
- @property void
connectTimeout
(Durationd
); - 接続のタイムアウトを設定する。
- @property void
proxy
(const(char)[]host
); - プロキシ
参照 プロキシ
- @property void
proxyPort
(ushortport
); - プロキシポート
参照 プロキシポート
- alias
CurlProxy
= etc.c.curl.CurlProxy
; - プロキシの型
- @property void
proxyType
(CurlProxytype
); - プロキシ型
参照 を参照のこと。
- @property void
dnsTimeout
(Durationd
); - DNSルックアップのタイムアウト。
- @property void
netInterface
(const(char)[]i
);
@property voidnetInterface
(const(ubyte)[4]i
);
@property voidnetInterface
(InternetAddressi
); - 使用するネットワーク・インターフェースをインターフェースのIPで指定する。
例:
theprotocol.netInterface = "192.168.1.32"; theprotocol.netInterface = [ 192, 168, 1, 32 ];
- @property void
localPort
(ushortport
); - 使用するローカル発信ポートを設定する。Parameters:
ushort port
最初に使用する発信ポート番号を設定する。 - @property void
localPortRange
(ushortrange
); - 使用するローカル発信ポート範囲を設定する。 これは localPort プロパティと併用できる。Parameters:
ushort range
最初のポートが占有されている場合、この数の ポート番号の転送を試みる。 - @property void
tcpNoDelay
(boolon
); - 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
); - アップロード/ダウンロードの進捗を通知するために呼び出されるイベントハンドラ。
コールバックパラメータ
プロトコルを自動検出するためにURLを使用する場合に使用する接続型。 この構造体は、高レベル API を呼び出す際の接続パラメータのプレースホルダとして使用される。 を呼び出す際に接続パラメータのプレースホルダとして使用され、 接続型 (HTTP/FTP) は URL パラメータを調べることで推測される。 URL パラメータを検査することで推測される。 プロトコルを推測するためのルールは以下のとおりである: 1、URLがftp://、ftps://、またはftpで始まる場合、FTP接続が想定される。 2、そうでなければHTTP接続。dlTotal
ダウンロードする総バイト数 dlNow
現在ダウンロードされているバイト数 ulTotal
アップロードする総バイト数 ulNow
現在アップロードされているバイト数 コールバックの戻り値 コールバックから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
(stringname
);
@property stringencoding
(); - 接続エンコード。デフォルトはISO-8859-1。
- @property void
contentLength
(ulonglen
); - ftp データのバイト数。
- CurlCode
getTiming
(CurlInfotiming
, ref doubleval
); - で定義されている様々なタイミングを取得する。 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
(ThrowOnErrorthrowOnError
= 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
(boolon
); - verboseを設定する。 リクエスト情報を標準エラー出力する。
- @property void
dataTimeout
(Durationd
); - コネクションのアクティビティのタイムアウトを設定する。
- @property void
operationTimeout
(Durationd
); - 操作が許可される最大時間を設定する。 これには、DNS解決、接続、データ転送などが含まれる。
- @property void
connectTimeout
(Durationd
); - 接続のタイムアウトを設定する。
- @property void
proxy
(const(char)[]host
); - プロキシ
参照 プロキシ
- @property void
proxyPort
(ushortport
); - プロキシポート
参照 プロキシポート
- alias
CurlProxy
= etc.c.curl.CurlProxy
; - プロキシの型
- @property void
proxyType
(CurlProxytype
); - プロキシ型
参照 を参照のこと。
- @property void
dnsTimeout
(Durationd
); - DNSルックアップのタイムアウト。
- @property void
netInterface
(const(char)[]i
);
@property voidnetInterface
(const(ubyte)[4]i
);
@property voidnetInterface
(InternetAddressi
); - 使用するネットワーク・インターフェースをインターフェースのIPで指定する。
例:
theprotocol.netInterface = "192.168.1.32"; theprotocol.netInterface = [ 192, 168, 1, 32 ];
- @property void
localPort
(ushortport
); - 使用するローカル発信ポートを設定する。Parameters:
ushort port
最初に使用する発信ポート番号を設定する。 - @property void
localPortRange
(ushortrange
); - 使用するローカル発信ポート範囲を設定する。 これは localPort プロパティと併用できる。Parameters:
ushort range
最初のポートが占有されている場合、この数の ポート番号の転送を試みる。 - @property void
tcpNoDelay
(boolon
); - 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
); - アップロード/ダウンロードの進捗を通知するために呼び出されるイベントハンドラ。
コールバックパラメータ
プロトコルを自動検出するためにURLを使用する場合に使用する接続型。 この構造体は、高レベル API を呼び出す際の接続パラメータのプレースホルダとして使用される。 を呼び出す際に接続パラメータのプレースホルダとして使用され、 接続型 (HTTP/FTP) は URL パラメータを調べることで推測される。 URL パラメータを検査することで推測される。 プロトコルを推測するためのルールは以下のとおりである: 1、URLがftp://、ftps://、またはftpで始まる場合、FTP接続が想定される。 2、そうでなければHTTP接続。dlTotal
ダウンロードする総バイト数 dlNow
現在ダウンロードされているバイト数 ulTotal
アップロードする総バイト数 ulNow
現在アップロードされているバイト数 コールバックの戻り値 コールバックから0を返すと成功のシグナルとなり、0以外を返すと を返す。
- @property void
mailFrom
()(const(char)[]sender
); - 送信者のメールアドレスのセッター。
- void
mailTo
()(const(char)[][]recipients
...); - 受信者のメールアドレスのセッター
- @property void
message
(stringmsg
); - メッセージ本文を設定する。
- class
CurlException
: object.Exception; - std.net.curl関数のエラー時にスローされる例外。
- pure nothrow @safe this(string
msg
, stringfile
= __FILE__, size_tline
= __LINE__, Throwablenext
= 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
, stringfile
= __FILE__, size_tline
= __LINE__, Throwablenext
= null); - Parameters:
string msg
例外のメッセージ。 string file
例外が発生したファイル。 size_t line
例外が発生した行番号。 Throwable next
例外の連鎖の前の例外があれば、その例外。
- class
HTTPStatusException
: std.net.curl.CurlException; - HTTP リクエストが失敗したときにスローされる例外。
- pure nothrow @safe this(int
status
, stringmsg
, stringfile
= __FILE__, size_tline
= __LINE__, Throwablenext
= 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
(boolsendingPaused
, boolreceivingPaused
); - 転送を一時停止および継続する。
- void
set
(CurlOptionoption
, const(char)[]value
); - 文字列 curl オプションを設定する。Parameters:
CurlOption option
A etc.c.curl.CurlOptioncurlのドキュメントにある const(char)[] value
文字列 - void
set
(CurlOptionoption
, longvalue
); - 長いcurlオプションを設定する。Parameters:
CurlOption option
A etc.c.curl.CurlOptioncurl ドキュメントにある long value
長い - void
set
(CurlOptionoption
, void*value
); - void* curl オプションを設定する。Parameters:
CurlOption option
A etc.c.curl.CurlOptioncurl ドキュメントにある void* value
ポインタ - void
clear
(CurlOptionoption
); - ポインタオプションをクリアする。Parameters:
CurlOption option
A etc.c.curl.CurlOptioncurlのドキュメントにある - void
clearIfSupported
(CurlOptionoption
); - ポインタオプションをクリアする。基礎となる libcurl がそのオプションをサポートしていない場合は例外を発生させない。控えめに使用する。Parameters:
CurlOption option
A etc.c.curl.CurlOptioncurl ドキュメントにあるように - CurlCode
perform
(ThrowOnErrorthrowOnError
= Yes.throwOnError
); - HTTP、FTPなど、事前に設定したとおりにcurlリクエストを実行する。 を実行する。Parameters:
ThrowOnError throwOnError
エラー時に例外をスローするか、CurlCodeを返すか。 - CurlCode
getTiming
(CurlInfotiming
, ref doubleval
); - 名前検索時間、合計時間、接続時間などの様々なタイミングを取得する。 タイミング カテゴリは、タイミング パラメータを介して渡される。 値は 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();
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku