1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: http_Connection.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 30213 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_HTTP_HTTP_CONNECTION_H_ 17 #define NN_HTTP_HTTP_CONNECTION_H_ 18 19 #include <nn/Result.h> 20 #include <nn/Handle.h> 21 #include <nn/http/http_Types.h> 22 #include <nn/http/http_Result.h> 23 #include <nn/http/http_ConnectionIpc.h> 24 #include <nn/http/http_CertStore.h> 25 #include <nn/http/http_ClientCert.h> 26 #include <nn/util/util_NonCopyable.h> 27 #include <nn/fnd/fnd_TimeSpan.h> 28 29 #ifdef __cplusplus 30 31 namespace nn { 32 namespace http { 33 34 /*! 35 @brief HTTPの通信を表すクラスです。本クラスの1つのインスタンスは、「1つのURLに対する1つのHTTP通信」を担います。 36 @attention @ref Initialize 以外のI/Fは、@ref Initialize 成功前に実行した場合は、 「通信先未割り当て」を表すエラー(Description==ER_CONNECTION_NOT_INITIALIZEDのResult)を返します。 37 */ 38 class Connection : private nn::util::NonCopyable<Connection> 39 { 40 public: 41 //---------------------------------------- 42 //! @name 初期化/終了 43 //@{ 44 45 /*! 46 @brief コンストラクタです。 47 48 初期化を行わないコンストラクタです。 49 50 別途 @ref Initialize を呼び出す必要があります。 51 52 */ 53 explicit Connection(void); 54 55 /*! 56 @brief コンストラクタです。 57 58 初期化を行うコンストラクタです。 59 内部で@ref Initialize を呼び出します。 60 (別途 @ref Initialize を呼び出す必要はありません。) 61 引数は@ref Initialize と同様です。引数定義は、@ref Initializeを参照してください。 62 63 */ 64 explicit Connection(const char* pUrl, RequestMethod method = REQUEST_METHOD_GET, bool isUseDefaultProxy = true); 65 66 /*! 67 @brief デストラクタです。 68 */ 69 virtual ~Connection(void); 70 71 /*! 72 @brief Connection を初期化し、URL やメソッドを割り当てます。 73 74 @param[in] pUrl 通信先ホストのURLの文字列 75 @param[in] method HTTPリクエストのメソッド(未指定の場合、デフォルト値の @ref nn::http::REQUEST_METHOD_GET が選択されます。) 76 @param[in] isUseDefaultProxy 機器に設定されているデフォルトのプロキシ設定を利用するか否か("利用する"はtrueです。 77 未指定の場合、デフォルト値のtrueが選択されます。) 78 79 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 80 @retval ResultSuccess 処理に成功しました。 81 @retval ResultConnectionAddErr 「すでに機器が管理可能な最大数のHTTP通信が存在し、通信割り当てができません」を表すエラー。他のHTTP通信が終了すれば利用可能になりますので、時間を置くことで他モジュールのHTTP通信終了を待機したり、自身がインスタンス化している他の @ref Connection を終了(@ref Finalize )させてから、再実行してください。 82 @retval ResultRequestUrlErr 「指定されたURLは不正なものです」を表すエラー。正しい形式のURLで、再度本関数を実行してください。 83 @retval ResultAlreadyAssignHostErr 「すでに通信先ホストが割り当て済みです」を表すエラー。本関数がすでに実行されており、URLが設定済みのConnectionです。設定済みのURLで通信する場合は、そのまま利用してください。URLを変更したい場合は、@ref Finalize 実行後に、本関数を実行してください。 84 @retval ResultConnectionProcessMaxErr 1プロセスの使用できるコネクションの最大数を越えていることを表すエラー。他のHTTP通信が終了すれば利用可能になりますので、自身がインスタンス化している他の @ref Connection を終了(@ref Finalize )させてから、再実行してください。 85 @retval ResultIpcSessionMaxErr 同時に接続可能なIPCセッション数のセッションがすでに接続中を表すエラー。ある程度の時間を待機することで(その間に他のIPCセッションが成功すれば)、再実行が成功する場合があります。 86 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 87 @retval ResultNotInitializedErr 「ライブラリが未初期化」を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 88 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 89 @attention 機器が同時に管理できるHTTP通信の数は有限です。@ref Initialize 時にすでに管理可能な最大数のHTTP通信が存在した場合は、エラーが返ります。 90 @note 本関数では通信先の割り当てのみが実施され、ネットワークレベルの接続は行われません。 91 ネットワーク通信が開始されるのは、@ref Connect / @ref ConnectAsync 呼び出し時となります。 92 */ 93 nn::Result Initialize(const char* pUrl, RequestMethod method = REQUEST_METHOD_GET, bool isUseDefaultProxy = true); 94 95 /*! 96 @brief 通信の終了処理を実施します。 97 <BR/> 98 @ref Initialize 後、通信先とのHTTP処理がすべて終了した後に、実行してください。<BR/> 99 (@ref Initialize を実行していないインスタンスに対しては、実行する必要はありません。実行しても構いませんが、何も処理は行われません。)<BR/> 100 ある @ref Connection インスタンスで本関数を実行した後は、そのインスタンス経由で通信先の情報を取得できなくなります。<BR/> 101 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 102 @retval ResultSuccess 処理に成功しました。 103 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 104 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 105 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 106 @attention 機器が同時に管理できるHTTP通信の数は有限です。使わなくなった通信に対しては必ずこの関数を実行して、他通信に管理リソースを回してください。 107 */ 108 nn::Result Finalize(void); 109 110 //@} 111 112 //---------------------------------------- 113 //! @name 通信設定 114 //@{ 115 116 /*! 117 @brief 接続に利用するプロキシサーバを設定します。 118 119 @param[in] pProxyName プロキシサーバのホストサーバ名 120 @param[in] port プロキシサーバのポート番号 121 @param[in] pUserName プロキシサーバのBasic認証用ユーザー名 122 @param[in] pPassword プロキシサーバのBasic認証用パスワード 123 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 124 @retval ResultSuccess 処理に成功しました。 125 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 126 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 127 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 128 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 129 */ 130 nn::Result SetProxy(const char* pProxyName, u16 port, const char* pUserName, const char* pPassword); 131 132 /*! 133 @brief Basic認証に用いる情報を設定します。 134 135 @param[in] pUserName Basic認証用ユーザー名 136 @param[in] pPassword Basic認証用パスワード 137 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 138 @retval ResultSuccess 処理に成功しました。 139 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 140 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 141 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 142 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 143 */ 144 nn::Result SetBasicAuthorization(const char* pUserName, const char* pPassword); 145 146 /*! 147 @brief 通信で用いるSocketのTCP受信バッファサイズを設定する。 148 149 受信バッファは HTTP ライブラリ内部のメモリから割り当てられているため、デフォルト(32,640 Byte)よりも大きな値には 150 設定しないでください。デフォルトでも通常の Socket よりも大きなバッファを使用しています。バッファサイズをデフォル 151 トのサイズ以上に設定したい特別な理由がある場合は、弊社までご相談ください。 152 @param[in] size 設定するTCP受信バッファサイズ 153 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 154 @retval ResultSuccess 処理に成功しました。 155 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 156 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 157 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 158 */ 159 nn::Result SetSocketBufferSize(size_t size); 160 161 //@} 162 163 //---------------------------------------- 164 //! @name 通信制御 165 //@{ 166 167 /*! 168 @brief 通信先との接続を開始します。 169 (同期版です。つまり「すでに機器が最大数のHTTP通信を行っている場合は、他のHTTP通信が終わるまでブロックします」。) 170 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 171 @retval ResultSuccess 処理に成功しました。 172 @retval ResultConnectionCanceledErr 「通信はキャンセルされました」を表すエラー。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 173 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 174 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 175 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 176 */ 177 nn::Result Connect(void); 178 179 /*! 180 @brief 通信先との接続を開始します。 181 (非同期版です。つまり「すでに機器が最大数のHTTP通信を行っている場合は、エラーが返ります。」) 182 @retval ResultSuccess 処理に成功しました。 183 @retval ResultMessageSendToListenThreadErr 「すでに機器が最大数のHTTP通信を行っています」を表すエラー。 184 @retval ResultConnectionCanceledErr 「通信はキャンセルされました」を表すエラー。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 185 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 186 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 187 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 188 */ 189 nn::Result ConnectAsync(void); 190 191 /*! 192 @brief 接続をキャンセルします。 193 通信がすでに終了している場合(エラー終了を含む)や、キャンセルされている場合は、何も処理を行わずに、ResultSuccessを返します。 194 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 195 @retval ResultSuccess 処理に成功しました。 196 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 197 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 198 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 199 */ 200 nn::Result Cancel(void); 201 202 /*! 203 @brief 接続の状況を取得します。(取得される状況の種類については、@ref nn::http::Status の定義を参照してください。) 204 205 @param[out] pStatusBuf 接続状況を格納するためのバッファ 206 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 207 @retval ResultSuccess 処理に成功しました。 208 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 209 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 210 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 211 */ 212 nn::Result GetStatus(Status* pStatusBuf) const; 213 214 /*! 215 @brief 接続中に発生したエラーを取得します。(取得値は最後に発生したエラーとなります。取得される状況の種類については、@ref nn::http::ResultCodeの定義を参照してください。) 216 @param[out] pResultCodeBuf エラーを格納するためのバッファ 217 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 218 @retval ResultSuccess 処理に成功しました。 219 @retval ResultConnectionCanceledErr 「通信はキャンセルされました」を表すエラー。pResultCodeBufには何も設定されません。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 220 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 221 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 222 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 223 */ 224 nn::Result GetError(ResultCode* pResultCodeBuf) const; 225 226 /*! 227 @brief HTTPレスポンスのメッセージボディ受信の進捗状況を取得します。 228 229 @param[out] pReceivedLen 「メッセージボディの受信済みデータサイズ」を格納するバッファ 230 @param[out] pContentLen 「メッセージボディの受信予定総データサイズ」を格納するバッファ 231 (HTTPレスポンスのContent-Lengthの値です。Content-Lengthが指定されていない場合は、0が返ります。) 232 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 233 @retval ResultSuccess 処理に成功しました。 234 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 235 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 236 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 237 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 238 */ 239 nn::Result GetProgress(size_t* pReceivedLen, size_t* pContentLen) const; 240 241 //@} 242 243 //---------------------------------------- 244 //! @name レスポンス受信 245 //@{ 246 247 /*! 248 @brief HTTPレスポンスを読み取ります。 249 250 引数で指定したバッファに、メッセージボディのデータが格納されます。<BR/> 251 メッセージボディがバッファよりも大きい場合は、バッファに入るだけデータを格納し、エラー(Description== @ref ER_RES_BODYBUF_SHORTAGE)を返します。<BR/> 252 その後再度 @ref Read を実行することで、前回の @ref Read でバッファに格納したデータの次のデータから、読み取りを継続できます。<BR/> 253 すべてのメッセージボディデータの受信が完了すると、SuccessのResultが返ります。<BR/> 254 <BR/> 255 ユーザーが指定したバッファに格納されるメッセージボディに対して、以下のデータはライブラリ側が保持しています。<BR/> 256 これらデータの取得には、それぞれ専用のAPIを使用してください。<BR/> 257 ・レスポンスステータス - @ref GetStatusCode <BR/> 258 ・メッセージヘッダ - @ref GetHeaderField / @ref GetHeaderAll <BR/> 259 <BR/> 260 ※@ref Read の実施前にこれらAPIを利用した場合、ヘッダ部受信完了までこれら関数はブロックします。 <BR/> 261 ※@ref Read の成功完了後は、ヘッダ部受信はすでに完了しているため、これら関数は結果をすぐに返します。 <BR/> 262 ※@ref Read の返値のエラーは、HTTPレスポンスの受信自体に失敗したことを示します。 <BR/> 263 そのため、受信には成功し、メッセージにて通信エラー(認証失敗など)が通知された場合では、@ref Read の戻り値は成功となります。 <BR/> 264 このようなエラーを確認したい場合は、@ref GetStatusCode で取得されるステータスコードを使用してください。 <BR/> 265 ※タイムアウト付きの@ref Read と異なり、この関数はタイムアウトしません。つまり処理が終了するまでは、関数から戻りません。<BR/> 266 そのため、例えば通信速度の低い環境で使用した場合には、処理が終了(「HTTPレスポンスの受信が完了する」か「バッファが一杯になる」)して関数から戻るまで、長時間かかることが予想されます。<BR/> 267 268 @param[out] pBodyBuf HTTPレスポンスのメッセージボディを格納するバッファ 269 @param[in] bufLen pBodyBufのサイズ 270 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 271 @retval ResultSuccess 処理に成功しました。 272 @retval ResultBodyBufShortage 「メッセージボディがバッファよりも大きく、すべて読み取れていません」を表すResult。 273 @retval ResultSocketKeepAliveDisconnected キープアライブ通信がサーバ側から切断されたことを表すエラー。キープアライブ通信がサーバ側から切断された場合、通常はHTTPライブラリ内で自動再接続が実施されますが、@ref SetLazyPostDataSetting で遅延POST設定がなされている場合、POSTデータ再送のために、HTTPライブラリは自動再接続を行わず、このエラーを返します。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 274 @retval ResultRequestHeaderErr 不正なHTTPヘッダが受信されたことを表すエラー。 275 @retval ResultSocketSendErr ソケットデータ送信失敗を表すエラー。サーバ側が通信を切断したケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 276 @retval ResultSocketReceiveErr ソケットデータ受信失敗を表すエラー。サーバ側が通信を切断したケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 277 @retval ResultSocketConnectErr ソケット接続失敗を表すエラー。サーバが存在しなかったり、停止しているケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 278 @retval ResultDnsResolutionErr 「URLで指定されたホスト名に対する名前解決が失敗しました」を表すエラー。 279 @retval ResultConnectionCanceledErr 「通信はキャンセルされました」を表すエラー。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 280 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 281 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 282 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 283 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 284 */ 285 nn::Result Read(u8* pBodyBuf, size_t bufLen); 286 287 /*! 288 @brief タイムアウト付きの@ref Read です。 289 290 タイムアウトが指定できること以外は、タイムアウト指定無しの@ref Read と同機能のAPIです。機能の詳細はタイムアウト無しAPIのリファレンスを参照してください。<BR/> 291 タイムアウト時間以内に「HTTPレスポンスの受信が完了する」、「バッファが一杯になる」のいずれの状態にもならなかった場合、@ref ResultTimeout が返ります。<BR/> 292 @ref ResultTimeout()が返った場合、そのコネクションは自動的にキャンセルされた状態になっています。(つまり@ref Cancel が内部的に実施されています。)<BR/> 293 294 @param[out] pBodyBuf HTTPレスポンスのメッセージボディを格納するバッファ 295 @param[in] bufLen pBodyBufのサイズ 296 @param[in] timeout タイムアウト時間 297 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 298 @retval ResultSuccess 処理に成功しました。 299 @retval ResultTimeout タイムアウトを表すエラー。 300 @retval 上記以外 タイムアウト指定なしの @ref Read と同様です。 301 */ 302 nn::Result Read(u8* pBodyBuf, size_t bufLen, const nn::fnd::TimeSpan& timeout); 303 304 305 /*! 306 @brief 受信したHTTPレスポンスのメッセージヘッダから、指定したラベルに一致するフィールドの値を取得します。 307 308 ヘッダ部受信処理終了まで、本APIはブロックします。受信処理が完了するのは、以下の条件が満たされた場合です。<BR/> 309 ・全ヘッダデータの受信が完了した<BR/> 310 ・キャンセルが実行された<BR/> 311 ・通信エラーが発生した(DNS名前解決失敗時など)<BR/> 312 他APIでヘッダ部受信処理終了がすでに完了している場合は、本APIはすぐに応答を返します。<BR/> 313 <BR/> 314 ※pFieldBufのサイズがフィールド値のサイズよりも小さい場合は、pFieldBufに格納できるだけデータを格納し、pFieldLengthCourierにはフィールド値のサイズを格納します。<BR/> 315 ※pFieldBuf==NULLまたはbufSize==0の場合、pFieldLengthCourier!=NULLであれば、フィールドの長さがpFieldLengthCourierに格納されます。<BR/> 316 ※タイムアウト付きの@ref GetHeaderField と異なり、この関数はタイムアウトしません。つまり処理が終了するまでは、関数から戻りません。<BR/> 317 そのため、例えば通信速度の低い環境で使用した場合には、処理が終了して関数から戻るまで、長時間かかることが予想されます。<BR/> 318 319 @param[in] pLabel ラベル名 320 @param[out] pFieldBuf フィールド値を格納するバッファ 321 @param[in] bufSize pFieldBufのデータサイズ 322 @param[out] pFieldLengthCourier フィールド値のデータサイズを格納するバッファ(フィールド値のデータサイズを必要としない場合は、省略可) 323 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 324 @retval ResultSuccess 処理に成功しました。 325 @retval ResultSocketKeepAliveDisconnected キープアライブ通信がサーバ側から切断されたことを表すエラー。このケースでは通常はHTTPライブラリ内で自動再接続が実施されますが、@ref SetLazyPostDataSetting で遅延POST設定がなされている場合、POSTデータ再送のためにHTTPライブラリは自動再接続を行わずにこのエラーを返します。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 326 @retval ResultRequestHeaderErr 不正なHTTPヘッダが受信されたことを表すエラー。 327 @retval ResultSocketSendErr ソケットデータ送信失敗を表すエラー。サーバ側が通信を切断したケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 328 @retval ResultSocketReceiveErr ソケットデータ受信失敗を表すエラー。サーバ側が通信を切断したケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 329 @retval ResultSocketConnectErr ソケット接続失敗を表すエラー。サーバが存在しなかったり、停止しているケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 330 @retval ResultDnsResolutionErr 「URLで指定されたホスト名に対する名前解決が失敗しました」を表すエラー。 331 @retval ResultConnectionCanceledErr 「通信はキャンセルされました」を表すエラー。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 332 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 333 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 334 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 335 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 336 */ 337 nn::Result GetHeaderField(const char* pLabel, char* pFieldBuf, size_t bufSize, size_t* pFieldLengthCourier = NULL) const; 338 339 /*! 340 @brief タイムアウト付きの@ref GetHeaderField です。 341 342 タイムアウトが指定できること以外は、タイムアウト指定無しの@ref GetHeaderField と同機能のAPIです。機能の詳細はタイムアウト無しAPIのリファレンスを参照してください。<BR/> 343 タイムアウト時間以内にHTTPレスポンスヘッダの受信が完了しなかった場合、@ref ResultTimeout が返ります。<BR/> 344 @ref ResultTimeout()が返った場合、そのコネクションは自動的にキャンセルされた状態になっています。(つまり@ref Cancel が内部的に実施されています。)<BR/> 345 346 @param[in] pLabel ラベル名 347 @param[out] pFieldBuf フィールド値を格納するバッファ 348 @param[in] bufSize pFieldBufのデータサイズ 349 @param[in] timeout タイムアウト時間 350 @param[out] pFieldLengthCourier フィールド値のデータサイズを格納するバッファ(フィールド値のデータサイズを必要としない場合は、省略可) 351 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 352 @retval ResultSuccess 処理に成功しました。 353 @retval ResultTimeout タイムアウトを表すエラー。 354 @retval 上記以外 タイムアウト指定なしの @ref GetHeaderField と同様です。 355 */ 356 nn::Result GetHeaderField(const char* pLabel, char* pFieldBuf, size_t bufSize, const nn::fnd::TimeSpan& timeout, size_t* pFieldLengthCourier = NULL) const; 357 358 /*! 359 @brief 受信したHTTPレスポンスのメッセージヘッダを取得します。 360 361 ヘッダ部受信処理終了まで、本APIはブロックします。この仕様に関する詳細は @ref GetHeaderField の説明を参照してください。<BR/> 362 ※pHeaderBufのサイズがヘッダのサイズよりも小さい場合は、pHeaderBufに格納できるだけデータを格納し、pLengthCourierにはヘッダのサイズを格納します。<BR/> 363 ※pHeaderBuf==NULLまたはbufSize==0の場合、pLengthCourier!=NULLであれば、フィールドの長さがpLengthCourierに格納されます。 <BR/> 364 ※タイムアウト付きの@ref GetHeaderAll と異なり、この関数はタイムアウトしません。つまり処理が終了するまでは、関数から戻りません。<BR/> 365 そのため、例えば通信速度の低い環境で使用した場合には、処理が終了して関数から戻るまで、長時間かかることが予想されます。<BR/> 366 @param[out] pHeaderBuf メッセージヘッダを格納するバッファ 367 @param[in] bufSize pHeaderBufのデータサイズ 368 @param[out] pLengthCourier メッセージヘッダサイズを格納するバッファ(メッセージヘッダサイズを必要としない場合は、省略可) 369 @return 関数の実行結果を返します。 Result 値は、タイムアウト引数のない @ref GetHeaderField と同様です。<BR> 370 */ 371 nn::Result GetHeaderAll(char* pHeaderBuf, size_t bufSize, size_t* pLengthCourier = NULL) const; 372 373 /*! 374 @brief タイムアウト付きの@ref GetHeaderAll です。 375 376 タイムアウトが指定できること以外は、タイムアウト指定無しの@ref GetHeaderAll と同機能のAPIです。機能の詳細はタイムアウト無しAPIのリファレンスを参照してください。<BR/> 377 タイムアウト時間以内にHTTPレスポンスヘッダの受信が完了しなかった場合、@ref ResultTimeout が返ります。<BR/> 378 @ref ResultTimeout()が返った場合、そのコネクションは自動的にキャンセルされた状態になっています。(つまり@ref Cancel が内部的に実施されています。)<BR/> 379 380 @param[out] pHeaderBuf メッセージヘッダを格納するバッファ 381 @param[in] bufSize pHeaderBufのデータサイズ 382 @param[in] timeout タイムアウト時間 383 @param[out] pLengthCourier メッセージヘッダサイズを格納するバッファ(メッセージヘッダサイズを必要としない場合は、省略可) 384 @return 関数の実行結果を返します。 Result 値は、タイムアウト引数のある @ref GetHeaderField と同様です。<BR> 385 */ 386 nn::Result GetHeaderAll(char* pHeaderBuf, size_t bufSize, const nn::fnd::TimeSpan& timeout, size_t* pLengthCourier = NULL) const; 387 388 /*! 389 @brief 受信したHTTPレスポンスのステータスコードを取得します。 390 391 ヘッダ部受信処理終了まで、本APIはブロックします。この仕様に関する詳細は @ref GetHeaderField の説明を参照してください。<BR/> 392 ※タイムアウト付きの@ref GetStatusCode と異なり、この関数はタイムアウトしません。つまり処理が終了するまでは、関数から戻りません。<BR/> 393 そのため、例えば通信速度の低い環境で使用した場合には、処理が終了して関数から戻るまで、長時間かかることが予想されます。<BR/> 394 @param[out] pStatusCodeCourier ステータスコードを格納するバッファ 395 @return 関数の実行結果を返します。 Result 値は、タイムアウト引数のない @ref GetHeaderField と同様です。<BR> 396 */ 397 nn::Result GetStatusCode(s32* pStatusCodeCourier) const; 398 399 /*! 400 @brief タイムアウト付きの@ref GetStatusCode です。 401 402 タイムアウトが指定できること以外は、タイムアウト指定無しの@ref GetStatusCode と同機能のAPIです。機能の詳細はタイムアウト無しAPIのリファレンスを参照してください。<BR/> 403 タイムアウト時間以内にHTTPレスポンスヘッダの受信が完了しなかった場合、@ref ResultTimeout が返ります。<BR/> 404 @ref ResultTimeout()が返った場合、そのコネクションは自動的にキャンセルされた状態になっています。(つまり@ref Cancel が内部的に実施されています。)<BR/> 405 406 @param[out] pStatusCodeCourier ステータスコードを格納するバッファ 407 @param[in] timeout タイムアウト時間 408 @return 関数の実行結果を返します。 Result 値は、タイムアウト引数のある @ref GetHeaderField と同様です。<BR> 409 */ 410 nn::Result GetStatusCode(s32* pStatusCodeCourier, const nn::fnd::TimeSpan& timeout) const; 411 412 //@} 413 414 415 //---------------------------------------- 416 //! @name 送信データ設定(HTTPリクエストヘッダ、POST) 417 //@{ 418 419 /*! 420 @brief HTTPリクエストで送信するメッセージヘッダのフィールドを追加します。 421 422 @param[in] pLabel フィールドのラベル名 423 @param[in] pValue フィールドの内容 424 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 425 @retval ResultSuccess 処理に成功しました。 426 @retval ResultConnectionStatusErr 不正状態を表すエラー。通信がこの関数を実行できない状態になっています。(例えばすでに「通信中」状態の場合、このエラーが返ります。本関数は @ref Connect 実行前に実行しなければいけません。) 427 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 428 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 429 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 430 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 431 */ 432 nn::Result AddHeaderField(const char* pLabel, const char* pValue); 433 434 435 /*! 436 @brief POSTデータの @ref Connect 前設定用API(ASCII文字列用)です。 437 438 HTTPリクエストで送信するPOSTデータ(ASCII文字列)を追加します。<BR/> 439 このAPIは @ref Connect 実行前の設定に使用します。設定後の @ref Connect 実行によって、POSTデータが送信されます。<BR/> 440 同じラベルのデータが先に追加されていた場合は、データを更新します。(つまり前に追加したデータを削除してから、追加します。)<BR/> 441 <BR/> 442 すべてのPOSTデータが @ref AddPostDataAscii のみで設定された場合、送信データはラベル、データ共にエンコードされた上で送信されます。<BR/> 443 (HTTPヘッダのContent-Typeには"x-www-form-urlencoded"が設定されます。)<BR/> 444 <BR/> 445 一つでも @ref AddPostDataBinary で設定したデータがある場合は、POSTデータはすべて、エンコードされずに(そのまま)送信されます。<BR/> 446 (HTTPヘッダのContent-Typeには"multipart/form-data"が設定されます。)<BR/> 447 448 @param[in] pLabel データのラベル名 449 @param[in] pValue データの内容 450 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 451 @retval ResultSuccess 処理に成功しました。 452 @retval ResultPostAddedAnotherErr すでにPOSTデータが設定されています。別タイプのPOSTデータがすでに設定されている場合、@ref SetLazyPostDataSetting でPOSTデータ遅延設定モードに設定されている場合に返ります。本関数はこれらPOSTデータ設定と競合しないように使用してください。(POSTデータを再設定するには、@ref Connectionの @ref Finalize を実施後、@ref Initialize からやり直してください。) 453 @retval ResultOutOfMemoryErr @ref nn::http::Initialize で設定したバッファから、POSTデータ用バッファを確保できませんでした。同時に登録するPOSTデータの合計サイズが、@ref nn::http::Initialize で設定したバッファのサイズ以下になるように調整してください。 454 @retval ResultConnectionStatusErr 不正状態を表すエラー。通信がこの関数を実行できない状態になっています。(例えばすでに「通信中」状態の場合、このエラーが返ります。本関数は @ref Connect 実行前に実行しなければいけません。) 455 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 456 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 457 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 458 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 459 */ 460 nn::Result AddPostDataAscii(const char* pLabel, const char* pValue); 461 462 /*! 463 @brief POSTデータの @ref Connect 前設定用API(バイナリデータ用)です。 464 465 HTTPリクエストで送信するPOSTデータ(バイナリデータ)を追加します。<BR/> 466 このAPIは @ref Connect 実行前の設定に使用します。<BR/> 467 設定後の @ref Connect実行によって、POSTデータが送信されます。<BR/> 468 同じラベルのデータが先に追加されていた場合は、データを更新します。<BR/> 469 (つまり前に追加したデータを削除してから、追加します。)<BR/> 470 <BR/> 471 @ref AddPostDataBinary で設定したデータがある場合は、POSTデータはすべて、エンコードされずに(そのまま)送信されます。<BR/> 472 (HTTPヘッダのContent-Typeには"multipart/form-data"が設定されます。)<BR/> 473 474 @param[in] pLabel データのラベル名 475 @param[in] pValue データの内容 476 @param[in] valueSize pValueのデータサイズ 477 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 478 @retval ResultSuccess 処理に成功しました。 479 @retval ResultPostAddedAnotherErr すでにPOSTデータが設定されています。別タイプのPOSTデータがすでに設定されている場合、@ref SetLazyPostDataSetting でPOSTデータ遅延設定モードに設定されている場合に返ります。本関数はこれらPOSTデータ設定と競合しないように使用してください。(POSTデータを再設定するには、@ref Connectionの @ref Finalize を実施後、@ref Initialize からやり直してください。) 480 @retval ResultOutOfMemoryErr @ref nn::http::Initialize で設定したバッファから、POSTデータ用バッファを確保できませんでした。同時に登録するPOSTデータの合計サイズが、@ref nn::http::Initialize で設定したバッファのサイズ以下になるように調整してください。 481 @retval ResultConnectionStatusErr 不正状態を表すエラー。通信がこの関数を実行できない状態になっています。(例えばすでに「通信中」状態の場合、このエラーが返ります。本関数は @ref Connect 実行前に実行しなければいけません。) 482 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 483 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 484 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 485 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 486 */ 487 nn::Result AddPostDataBinary(const char* pLabel, const void* pValue, size_t valueSize); 488 489 /*! 490 @brief POSTデータの @ref Connect 前設定用API(Rawデータ用)です。 491 492 HTTPリクエストで送信するPOSTデータすべてを、一括で設定します。<BR/> 493 バイナリ形式ですが、POSTデータ全体を直接Rawデータで設定します。<BR/> 494 (他のAPIは、POSTデータのラベル部とバリュー部を設定します。)<BR/> 495 <BR/> 496 このAPIは @ref Connect 実行前の設定に使用します。<BR/> 497 設定後の @ref Connect 実行によって、POSTデータが送信されます。<BR/> 498 <BR/> 499 POSTデータ全体を設定しますので、本APIによる設定以降にPOSTデータ部分設定API(@ref AddPostDataAscii と @ref AddPostDataBinary)<BR/> 500 を呼び出すと、エラー(Descriptionは @ref nn::http::ER_POST_ADDED_ANOTHER)が返ります。<BR/> 501 本APIによる設定以降に、再び本APIでRawデータを設定した場合は、前回設定したデータは破棄され、設定データが更新されます。<BR/> 502 503 @param[in] pValue データの内容 504 @param[in] valueSize pValueのデータサイズ 505 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 506 @retval ResultSuccess 処理に成功しました。 507 @retval ResultPostAddedAnotherErr すでにPOSTデータが設定されています。別タイプのPOSTデータがすでに設定されている場合、RawタイプのPOSTデータがすでに登録されている場合、@ref SetLazyPostDataSetting でPOSTデータ遅延設定モードに設定されている場合に返ります。本関数はこれらPOSTデータ設定と競合しないように使用してください。(POSTデータを再設定するには、@ref Connectionの @ref Finalize を実施後、@ref Initialize からやり直してください。) 508 @retval ResultOutOfMemoryErr @ref nn::http::Initialize で設定したバッファから、POSTデータ用バッファを確保できませんでした。同時に登録するPOSTデータの合計サイズが、@ref nn::http::Initialize で設定したバッファのサイズ以下になるように調整してください。 509 @retval ResultConnectionStatusErr 不正状態を表すエラー。通信がこの関数を実行できない状態になっています。(例えばすでに「通信中」状態の場合、このエラーが返ります。本関数は @ref Connect 実行前に実行しなければいけません。) 510 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 511 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 512 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 513 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 514 */ 515 nn::Result AddPostDataRaw(const void* pValue, size_t valueSize); 516 517 /*! 518 @brief POSTデータ遅延設定モード(@ref Connect 後のデータ指定モード)に設定します。 519 520 この関数を実行すると、POSTデータの遅延設定(@ref Connect / @ref ConnectAsync 実行後に、SendPostData××()によってデータを設定)が可能となります。<BR/> 521 <BR/> 522 POSTデータ遅延設定モードでは、@ref Connect / @ref ConnectAsync 実行後、SendPostData××()は何回実行しても構いません。<BR/> 523 POSTデータは、SendPostData××()の同期処理としてそのまま送信されます。よって送信が完了するまで、SendPostData××()はブロックします。<BR/> 524 すべてのPOSTデータの設定が完了したら、@ref NotifyFinishSendPostData を実行しなければなりません。<BR/> 525 <BR/> 526 NotifyFinishSendPostData()の実行後、HTTPレスポンスの受信に移行します。<BR/> 527 528 @param[in] dataType POSTデータのタイプです。 529 530 @ref nn::http::POST_DATA_TYPE_URLENCODE : 設定したデータは、ASCIIデータの場合(つまり@ref SendPostDataAscii を使った場合)には、データがURLエンコードされて送信されます。<BR/> 531 使用できるSendPostData××()は、@ref SendPostDataAscii と @ref SendPostDataBinary です。<BR/> 532 @ref SendPostDataAscii を使った場合は、URLエンコードされた[<ラベル名>=<データ内容>]のデータが送信されます。<BR/> 533 @ref SendPostDataBinary を使った場合は、URLエンコードされない[<ラベル名>=<データ内容>]のデータが送信されます。<BR/> 534 1回のSendPostData××()で設定されたラベルとデータは、Chunkedデータの一単位としてまとめて送信されます。<BR/> 535 <BR/> 536 <BR/> 537 @ref nn::http::POST_DATA_TYPE_MULTIPART : 設定したデータは、MIMEのマルチパートデータとして送信されます。<BR/> 538 使用できるSendPostData××()は、@ref SendPostDataAscii と @ref SendPostDataBinaryです。<BR/> 539 1回のSendPostData××()で設定されたラベルとデータは、boundaryデータやヘッダフィールドが先頭に付与されて、Chunkedデータの一単位としてまとめて送信されます。<BR/> 540 設定したラベルデータは、Content-Dispositionフィールドのnameとして設定されます。<BR/> 541 (すなわち"Content-Disposition: form-data; name=[ラベル]"というヘッダフィールドが、Chunkedデータのboundaryデータの後に付与されます。)<BR/> 542 @ref SendPostDataBinaryでラベルとデータを設定した場合は、Chunkedデータのboundaryデータの後に、Content-Typeフィールドが付与されます。<BR/> 543 (フィールド内容は"Content-Type: application/octet-stream\\r\\nContent-Transfer-Encoding: binary\\r\\n"となります。<BR/> 544 @ref SendPostDataAscii で設定したデータのChunkedデータには、このフィールドは付与されません。)<BR/> 545 <BR/> 546 <BR/> 547 @ref nn::http::POST_DATA_TYPE_RAW : 設定したデータは、そのまま送信されます。使用できるSendPostData××()は、@ref SendPostDataRaw のみです。<BR/> 548 1回の @ref SendPostDataRaw で設定されたデータは、Chunkedデータの一単位としてまとめて送信されます。 549 550 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 551 @retval ResultSuccess 処理に成功しました。 552 @retval ResultPostAddedAnotherErr すでにPOSTデータが @ref Connect 前設定APIで設定されています。本関数はこれらPOSTデータ設定と競合しないように使用してください。(POSTデータを再設定するには、@ref Connectionの @ref Finalize を実施後、@ref Initialize からやり直してください。) 553 @retval ResultConnectionStatusErr 不正状態を表すエラー。通信がこの関数を実行できない状態になっています。(例えばすでに「通信中」状態の場合、このエラーが返ります。本関数は @ref Connect 実行前に実行しなければいけません。) 554 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 555 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 556 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 557 */ 558 nn::Result SetLazyPostDataSetting( PostDataType dataType ); 559 560 /*! 561 @brief POSTデータ遅延設定モード時、全POSTデータ設定完了を通知します。 562 563 詳しくは @ref SetLazyPostDataSetting の説明を参照してください。 564 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 565 @retval ResultSuccess 処理に成功しました。 566 @retval ResultConnectionCanceledErr 「通信はキャンセルされました」を表すエラー。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 567 @retval ResultConnectionStatusErr 不正状態を表すエラー。通信がこの関数を実行できない状態になっています。(例えばまだ「通信開始前」の状態の場合、このエラーが返ります。本関数は @ref Connect 実行後に実行しなければいけません。) 568 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 569 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 570 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 571 */ 572 nn::Result NotifyFinishSendPostData( void ); 573 574 /*! 575 @brief HTTPリクエストのPOSTデータのエンコードタイプを設定します。 576 577 @param[in] type 設定するエンコードタイプ 578 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 579 @retval ResultSuccess 処理に成功しました。 580 @retval ResultPostAddedAnotherErr すでにPOSTデータが設定されています。@ref AddPostDataRaw ですでにRawタイプのPOSTデータがすでに登録されている場合、@ref SetLazyPostDataSetting でPOSTデータ遅延設定モードに設定されている場合に返ります。本関数はこれらPOSTデータ設定と競合しないように使用してください。(POSTデータを再設定するには、@ref Connectionの @ref Finalize を実施後、@ref Initialize からやり直してください。) 581 @retval ResultConnectionStatusErr 不正状態を表すエラー。通信がこの関数を実行できない状態になっています。(例えばすでに「通信中」状態の場合、このエラーが返ります。本関数は @ref Connect 実行前に実行しなければいけません。) 582 @retval ResultPostUnknownEnctypeErr 不明なエンコードタイプが指定されたことを表すエラー。@ref EncodingType で定義されていない値を設定したときに返ります。(POSTデータを再設定するには、@ref Connectionの @ref Finalize を実施後、@ref Initialize からやり直してください。) 583 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 584 */ 585 nn::Result SetPostDataEncoding(EncodingType type); 586 587 /*! 588 @brief POSTデータ遅延設定モード時のPOSTデータ設定用API(ASCII文字列用)です。 589 590 POSTデータ遅延設定モード(@ref SetLazyPostDataSetting でモードに入ることができる。)において、@ref Connect / @ref ConnectAsync 実行後に使用することができます。 591 POSTデータ遅延設定モードの詳細は、@ref SetLazyPostDataSetting の説明を参照してください。 592 593 ※タイムアウト付きの@ref SendPostDataAscii と異なり、この関数はタイムアウトしません。つまり処理が終了するまでは、関数から戻りません。<BR/> 594 そのため、例えば通信速度の低い環境で使用した場合には、処理が終了して関数から戻るまで、長時間かかることが予想されます。<BR/> 595 @param[in] pLabel データのラベル名 596 @param[in] pValue データの内容 597 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 598 @retval ResultSuccess 処理に成功しました。 599 @retval ResultSocketKeepAliveDisconnected キープアライブ通信がサーバ側から切断されたことを表すエラー。このケースでは通常はHTTPライブラリ内で自動再接続が実施されますが、@ref SetLazyPostDataSetting で遅延POST設定がなされている場合、POSTデータ再送のためにHTTPライブラリは自動再接続を行わずにこのエラーを返します。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 600 @retval ResultSocketSendErr ソケットデータ送信失敗を表すエラー。サーバ側が通信を切断したケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 601 @retval ResultSocketConnectErr ソケット接続失敗を表すエラー。サーバが存在しなかったり、停止しているケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 602 @retval ResultDnsResolutionErr 「URLで指定されたホスト名に対する名前解決が失敗しました」を表すエラー。 603 @retval ResultConnectionCanceledErr 「通信はキャンセルされました」を表すエラー。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 604 @retval ResultConnectionStatusErr 不正状態を表すエラー。通信がこの関数を実行できない状態になっています。(例えばまだ「通信開始前」の状態の場合、このエラーが返ります。本関数は @ref Connect 実行後に実行しなければいけません。) 605 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 606 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 607 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 608 */ 609 nn::Result SendPostDataAscii(const char* pLabel, const char* pValue); 610 611 /*! 612 @brief タイムアウト付きの@ref SendPostDataAscii です。 613 614 タイムアウトが指定できること以外は、タイムアウト指定無しの@ref SendPostDataAscii と同機能のAPIです。機能の詳細はタイムアウト無しAPIのリファレンスを参照してください。<BR/> 615 タイムアウト時間以内にPOSTデータの送信が完了しなかった場合、@ref ResultTimeout が返ります。<BR/> 616 @ref ResultTimeout()が返った場合、そのコネクションは自動的にキャンセルされた状態になっています。(つまり@ref Cancel が内部的に実施されています。)<BR/> 617 618 @param[in] pLabel データのラベル名 619 @param[in] pValue データの内容 620 @param[in] timeout タイムアウト時間 621 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 622 @retval ResultSuccess 処理に成功しました。 623 @retval ResultTimeout タイムアウトを表すエラー。 624 @retval 上記以外 タイムアウト指定なしの @ref SendPostDataAscii と同様です。 625 */ 626 nn::Result SendPostDataAscii(const char* pLabel, const char* pValue, const nn::fnd::TimeSpan& timeout); 627 628 /*! 629 @brief POSTデータ遅延設定モード時のPOSTデータ設定用API(バイナリデータ用)です。 630 631 POSTデータ遅延設定モード(@ref SetLazyPostDataSetting でモードに入ることができる。)において、@ref Connect / @ref ConnectAsync 実行後に使用することができます。 632 POSTデータ遅延設定モードの詳細は、@ref SetLazyPostDataSetting の説明を参照してください。 633 634 ※タイムアウト付きの@ref SendPostDataBinary と異なり、この関数はタイムアウトしません。つまり処理が終了するまでは、関数から戻りません。<BR/> 635 そのため、例えば通信速度の低い環境で使用した場合には、処理が終了して関数から戻るまで、長時間かかることが予想されます。<BR/> 636 637 @param[in] pLabel データのラベル名 638 @param[in] pValue データの内容 639 @param[in] valueSize pValueのデータサイズ 640 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 641 @retval ResultSuccess 処理に成功しました。 642 @retval ResultSocketKeepAliveDisconnected キープアライブ通信がサーバ側から切断されたことを表すエラー。このケースでは通常はHTTPライブラリ内で自動再接続が実施されますが、@ref SetLazyPostDataSetting で遅延POST設定がなされている場合、POSTデータ再送のためにHTTPライブラリは自動再接続を行わずにこのエラーを返します。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 643 @retval ResultSocketSendErr ソケットデータ送信失敗を表すエラー。サーバ側が通信を切断したケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 644 @retval ResultSocketConnectErr ソケット接続失敗を表すエラー。サーバが存在しなかったり、停止しているケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 645 @retval ResultDnsResolutionErr 「URLで指定されたホスト名に対する名前解決が失敗しました」を表すエラー。 646 @retval ResultConnectionCanceledErr 「通信はキャンセルされました」を表すエラー。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 647 @retval ResultConnectionStatusErr 不正状態を表すエラー。通信がこの関数を実行できない状態になっています。(例えばまだ「通信開始前」の状態の場合、このエラーが返ります。本関数は @ref Connect 実行後に実行しなければいけません。) 648 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 649 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 650 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 651 */ 652 nn::Result SendPostDataBinary(const char* pLabel, const void* pValue, size_t valueSize); 653 654 /*! 655 @brief タイムアウト付きの@ref SendPostDataBinary です。 656 657 タイムアウトが指定できること以外は、タイムアウト指定無しの@ref SendPostDataBinary と同機能のAPIです。機能の詳細はタイムアウト無しAPIのリファレンスを参照してください。<BR/> 658 タイムアウト時間以内にPOSTデータの送信が完了しなかった場合、@ref ResultTimeout が返ります。<BR/> 659 @ref ResultTimeout()が返った場合、そのコネクションは自動的にキャンセルされた状態になっています。(つまり@ref Cancel が内部的に実施されています。)<BR/> 660 661 @param[in] pLabel データのラベル名 662 @param[in] pValue データの内容 663 @param[in] valueSize pValueのデータサイズ 664 @param[in] timeout タイムアウト時間 665 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 666 @retval ResultSuccess 処理に成功しました。 667 @retval ResultTimeout タイムアウトを表すエラー。 668 @retval 上記以外 タイムアウト指定なしの @ref SendPostDataBinary と同様です。 669 */ 670 nn::Result SendPostDataBinary(const char* pLabel, const void* pValue, size_t valueSize, const nn::fnd::TimeSpan& timeout); 671 672 /*! 673 @brief POSTデータ遅延設定モード時のPOSTデータ設定用API(RAWデータ用)です。 674 675 POSTデータ遅延設定モード(@ref SetLazyPostDataSetting でモードに入ることができる。)において、@ref Connect / @ref ConnectAsync 実行後に使用することができます。 676 POSTデータ遅延設定モードの詳細は、@ref SetLazyPostDataSetting の説明を参照してください。 677 678 ※タイムアウト付きの@ref SendPostDataRaw と異なり、この関数はタイムアウトしません。つまり処理が終了するまでは、関数から戻りません。<BR/> 679 そのため、例えば通信速度の低い環境で使用した場合には、処理が終了して関数から戻るまで、長時間かかることが予想されます。<BR/> 680 681 @param[in] pValue データの内容 682 @param[in] valueSize pValueのデータサイズ 683 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 684 @retval ResultSuccess 処理に成功しました。 685 @retval ResultSocketKeepAliveDisconnected キープアライブ通信がサーバ側から切断されたことを表すエラー。このケースでは通常はHTTPライブラリ内で自動再接続が実施されますが、@ref SetLazyPostDataSetting で遅延POST設定がなされている場合、POSTデータ再送のためにHTTPライブラリは自動再接続を行わずにこのエラーを返します。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 686 @retval ResultSocketSendErr ソケットデータ送信失敗を表すエラー。サーバ側が通信を切断したケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 687 @retval ResultSocketConnectErr ソケット接続失敗を表すエラー。サーバが存在しなかったり、停止しているケースなどが考えられます。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 688 @retval ResultDnsResolutionErr 「URLで指定されたホスト名に対する名前解決が失敗しました」を表すエラー。 689 @retval ResultConnectionCanceledErr 「通信はキャンセルされました」を表すエラー。再度通信を行うには、@ref Connection の @ref Finalize を実行後、@ref Initialize からやり直してください。 690 @retval ResultConnectionStatusErr 不正状態を表すエラー。通信がこの関数を実行できない状態になっています。(例えばまだ「通信開始前」の状態の場合、このエラーが返ります。本関数は @ref Connect 実行後に実行しなければいけません。) 691 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 692 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 693 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 694 */ 695 nn::Result SendPostDataRaw(const void* pValue, size_t valueSize); 696 697 /*! 698 @brief タイムアウト付きの@ref SendPostDataRaw です。 699 700 タイムアウトが指定できること以外は、タイムアウト指定無しの@ref SendPostDataRaw と同機能のAPIです。機能の詳細はタイムアウト無しAPIのリファレンスを参照してください。<BR/> 701 タイムアウト時間以内にPOSTデータの送信が完了しなかった場合、@ref ResultTimeout が返ります。<BR/> 702 @ref ResultTimeout()が返った場合、そのコネクションは自動的にキャンセルされた状態になっています。(つまり@ref Cancel が内部的に実施されています。)<BR/> 703 704 @param[in] pValue データの内容 705 @param[in] valueSize pValueのデータサイズ 706 @param[in] timeout タイムアウト時間 707 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 708 @retval ResultSuccess 処理に成功しました。 709 @retval ResultTimeout タイムアウトを表すエラー。 710 @retval 上記以外 タイムアウト指定なしの @ref SendPostDataRaw と同様です。 711 */ 712 nn::Result SendPostDataRaw(const void* pValue, size_t valueSize, const nn::fnd::TimeSpan& timeout); 713 714 //@} 715 716 //---------------------------------------- 717 //! @name HTTPS用設定 718 //@{ 719 720 /*! 721 @brief CA証明書を設定します。複数回実行することで、複数個の証明書を設定することもできます。 722 723 @param[in] pCertData 証明書データ。データフォーマットは、X.509 v3の証明書データ(ASN.1定義)をDERエンコードしたバイナリデータ。 724 @param[in] certDataSize pCertDataのサイズ 。 725 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 726 @retval ResultSuccess 処理に成功しました。 727 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 728 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 729 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 730 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 731 */ 732 nn::Result SetRootCa(const u8* pCertData, size_t certDataSize); 733 734 /*! 735 @brief 機器内蔵CA証明書を設定します。複数回実行することで、複数個の証明書を設定することもできます。 736 737 @param[in] inCaCertName 対象の機器内蔵CA証明書(ssl の @ref nn::ssl::InternalCaCertの値。) 738 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 739 @retval ResultSuccess 処理に成功しました。 740 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 741 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 742 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 743 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 744 */ 745 nn::Result SetRootCa( InternalCaCertId inCaCertName ); 746 747 /*! 748 @brief CA証明書ストアを設定します。(複数のHTTPS通信で同じCA証明書セットを使いまわしたい場合に利用します。) 749 設定した証明書ストアは、設定先のHTTPS通信実施中は解放しないでください。 750 751 @param[in] certStore 設定する証明書ストア 752 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 753 @retval ResultSuccess 処理に成功しました。 754 @retval ResultNoCaCertStoreErr 該当するCA証明書ストアの未登録を表すエラー。引数に設定した@ref CertStore の@ref nn::CertStore::Initialize が実行されていないか、すでに@ref nn::CertStore::Finalize が実行されています。再度 @ref nn::CertStore::Initialize で初期化された@ref Cert インスタンスを引数に指定して、本関数を実行してください。 755 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 756 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 757 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 758 */ 759 nn::Result SetRootCaStore(CertStore& certStore); 760 761 762 /*! 763 @brief 証明書と秘密鍵のデータからクライアント証明書を設定します。 764 765 @param[in] pCertData 証明書データ。データフォーマットは、X.509 v3の証明書データ(ASN.1定義)をDERエンコードしたバイナリデータ。 766 @param[in] certDataSize pCertDataのサイズ 。 767 @param[in] pPrivateKeyData 秘密鍵のデータ。データフォーマットは、X.509の鍵データ(ASN.1定義)をDERエンコードしたバイナリデータ。 768 @param[in] privateKeyDataSize pPrivateKeyDataのサイズ 。 769 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 770 @retval ResultSuccess 処理に成功しました。 771 @retval ResultCertExistErr すでに他のクライアント証明書が本関数で設定されていることを表すエラー。別のクライアント証明書を設定したい場合は、@ref Finalize を実行後、@ref Initialize からやり直してください。 772 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 773 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 774 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 775 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 776 */ 777 nn::Result SetClientCert(const u8* pCertData, size_t certDataSize, const u8* pPrivateKeyData, size_t privateKeyDataSize); 778 779 /*! 780 @brief 機器内蔵クライアント証明書を設定します。 781 782 @param[in] inClientCertName 対象の機器内蔵クライアント証明書(sslの @ref nn::ssl::InternalClientCertの値。) 783 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 784 @retval ResultSuccess 処理に成功しました。 785 @retval ResultCertExistErr すでに他のクライアント証明書が本関数で設定されていることを表すエラー。別のクライアント証明書を設定したい場合は、@ref Finalize を実行後、@ref Initialize からやり直してください。 786 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 787 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 788 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 789 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 790 */ 791 nn::Result SetClientCert( InternalClientCertId inClientCertName ); 792 793 /*! 794 @brief ClientCertインスタンスを用いてクライアント証明書を設定します。(複数のHTTPS通信で同じクライアント証明書を使いまわしたい場合に利用します。) 795 設定したクライアント証明書は、設定先のHTTPS通信実施中は解放しないでください。 796 @param[in] clientCert 設定するクライアント証明書。 797 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 798 @retval ResultSuccess 処理に成功しました。 799 @retval ResultNoClientCertErr 該当するクライアント証明書の未登録を表すエラー。引数に設定した@ref ClientCert の@ref nn::ClientCert::Initialize が実行されていないか、すでに@ref nn::ClientCert::Finalize が実行されています。再度 @ref nn::ClientCert::Initialize で初期化された@ref ClientCert インスタンスを引数に指定して、本関数を実行してください。 800 @retval ResultCertExistErr すでに他のクライアント証明書が本関数で設定されていることを表すエラー。別のクライアント証明書を設定したい場合は、@ref Finalize を実行後、@ref Initialize からやり直してください。 801 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 802 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 803 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 804 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 805 */ 806 nn::Result SetClientCert(ClientCert& clientCert); 807 808 809 /*! 810 @brief SSL通信中に発生したエラーを取得します。 811 (エラーコードは @ref nn::ssl::ResultCode の値となります。取得される値は、本関数を呼び出す前の最後に発生したエラーコードとなります。) 812 813 @param[out] pResultCodeBuf エラーを格納するためのバッファ 814 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 815 @retval ResultSuccess 処理に成功しました。 816 @retval ResultInvalidParamErr パラメータの不正を表すエラー。正しいパラメータを指定して、再度本関数を実行してください。 817 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 818 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 819 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 820 */ 821 nn::Result GetSslError(s32* pResultCodeBuf) const; 822 823 824 /*! 825 @brief SSLのサーバ検証に関するオプションを設定します。<BR/> 826 ※ @ref nn::ssl::VerifyOption 列挙体に定義が存在する以下の検証は、デフォルトで実施されます。<BR/> 827 CommonName検証(@ref nn::ssl::VERIFY_COMMON_NAME)<BR/> 828 RootCA検証(@ref nn::ssl::VERIFY_ROOT_CA)<BR/> 829 SubjectAlternativeName検証(@ref nn::ssl::VERIFY_SUBJECT_ALT_NAME)<BR/> 830 831 @param[in] verifyOption SSLのサーバ検証に関するオプション設定。デフォルトのサーバ検証では実施しない設定となっている検証オプションを、実施する場合に利用します。 832 (デフォルトのサーバ検証を用いる場合は、この引数は省略できます。) 833 引数には、実施する検証オプションを表す @ref nn::ssl::VerifyOption 列挙体の値を設定します。 834 (複数の値を設定したい場合は、複数値の論理和を設定します。) 835 <BR/> 836 現在この引数に設定可能な値は、以下となります。<BR/> 837 @ref nn::ssl::VERIFY_DATE : 証明書の期限切れ検証を実施します。<BR/> 838 @ref nn::ssl::USE_SESSION_CACHE : resumptionを利用します。(つまり同じホストに連続で接続する際、セッションの再利用を試みます。)<BR/> 839 ※本APIによるオプション設定は、設定対象の通信開始前(つまり @ref Connect / @ref ConnectAsync の呼び出し前)に実施する必要があります。 840 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 841 @retval ResultSuccess 処理に成功しました。 842 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 843 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 844 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 845 */ 846 nn::Result SetVerifyOption(u32 verifyOption); 847 848 /** 849 @brief 指定したビットのSSL通信の検証内容を削除します。 850 851 デフォルトで検証する項目は安全を守るためのものです。<BR/> 852 デバッグ目的以外で検証項目を減らさないでください。<BR/> 853 ※本APIによるオプション設定は、設定対象の通信開始前(つまり @ref Connect / @ref ConnectAsync の呼び出し前)に実施する必要があります。 854 855 @param[in] excludeVerifyOptions SSLの検証方法に関して、除外対象を表すオプション。 856 除外したい検証方法を表す @ref nn::ssl::VerifyOption 列挙体の値を設定します。(複数の値を設定したい場合は、複数値の論理を設定します。) 857 現在この引数に設定可能な値は、以下となります。 858 <BR/> 859 @ref nn::ssl::VERIFY_COMMON_NAME : 証明書の CommonName が 対象ホストの名称と一致するか検証します。<BR/> 860 @ref nn::ssl::VERIFY_SUBJECT_ALT_NAME : CommonNameの検証を行う際に、証明書にSubjectAltNameの記述がある場合はそちらを優先して使用します。<BR/> 861 @ref nn::ssl::VERIFY_ROOT_CA : 証明書の Root CA を検証します。<BR/> 862 863 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 864 @retval ResultSuccess 処理に成功しました。 865 @retval ResultNotConnectedErr 通信先が割り当てられていないConnectionを表すエラー。@ref Initialize が成功していないConnectionに対する実行であり、何も処理は行われていません。 866 @retval ResultNotInitializedErr ライブラリが未初期化を表すエラー。@ref nn::http::Initialize が実行されていないと、本ライブラリの関数はすべて利用することができません。 867 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 868 */ 869 nn::Result DisableVerifyOptionForDebug( u32 excludeVerifyOptions ); 870 871 /*! 872 @brief [deprecated]廃止予定のAPIです。 873 機器内のデフォルト証明書をCA証明書として利用するように設定します。 874 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 875 @retval ResultSuccess 処理に成功しました。 876 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 877 */ 878 nn::Result SetRootCaDefault( void ) NN_ATTRIBUTE_DEPRECATED; 879 880 /*! 881 @brief [deprecated]廃止予定のAPIです。 882 機器内のデフォルトクライアント証明書をクライアント証明書として利用するように設定します。 883 @return 関数の実行結果を返します。以下に挙げる Result を返します。<BR> 884 @retval ResultSuccess 処理に成功しました。 885 @retval 上記以外 想定外のエラー(エラー内容については、@ref http_Result.h を参照)。 886 */ 887 nn::Result SetClientCertDefault( void ) NN_ATTRIBUTE_DEPRECATED; 888 //@} 889 890 891 private: 892 /** 893 @brief HTTPのコネクションハンドル。 894 */ 895 ConnectionHandle m_ConnectHandle; 896 897 /** 898 @brief HTTPプロセスとのコネクション専用IPCセッション 899 */ 900 nn::Handle m_privateIpcSession; 901 902 /** 903 @brief HTTPプロセスとのコネクション専用IPCクライアント 904 */ 905 mutable ConnectionIpc m_PrivateIpcClient; 906 907 908 /*! 909 @brief 接続に利用するプロキシサーバを、デフォルトサーバに設定します。 910 @return 処理の結果が返ります。<BR> 911 */ 912 nn::Result SetProxyDefault(void); 913 914 /** 915 * @brief コネクションが設定済みか否かを返す。「コネクションが設定済み」とは、Create関数でコネクト先と手段が指定されているか否かである。 916 * @return コネクションが設定済みか否か(trueが設定済み) 917 */ IsConnected()918 bool IsConnected() const 919 { 920 return (m_ConnectHandle > 0) ? true : false; 921 } 922 923 /** 924 * @brief コネクション専用IPCクライアントを割り当てます。 925 * @return 処理の結果。 926 */ 927 Result AssignPrivateIpcClient(); 928 }; 929 930 931 } // end of namespace http 932 } // end of namespace nn 933 934 935 #endif // __cplusplus 936 937 938 939 #include <nn/util/detail/util_CLibImpl.h> 940 941 942 /*! 943 @addtogroup nn_http http 944 @{ 945 946 @defgroup nn_http_Connection_c Connection (C) 947 948 @brief @ref nn::http::Connection の C インタフェースモジュールです。 949 950 @{ 951 */ 952 953 /*! 954 @struct nnhttpConnection 955 @brief HTTPのConnectionを表す C の構造体です。 956 957 @brief 対応するクラス @ref nn::http::Connection を参照してください。 958 */ 959 NN_UTIL_DETAIL_CLIBIMPL_DEFINE_BUFFER_CLASS(nnhttpConnection, nn::http::Connection, 16, u32); 960 961 /*! 962 @brief 対応する C++ 関数 @ref nn::http::Connection::Initialize を参照してください。 963 */ 964 NN_EXTERN_C nnResult nnhttpConnectionInitialize(nnhttpConnection* this_, const char *pUrl, nnHttpRequestMethod method); 965 966 /*! 967 @brief 対応する C++ 関数 @ref nn::http::Connection::Finalize を参照してください。 968 */ 969 NN_EXTERN_C nnResult nnhttpConnectionFinalize(nnhttpConnection* this_); 970 971 /*! 972 @brief 対応する C++ 関数 @ref nn::http::Connection::Connect を参照してください。 973 */ 974 NN_EXTERN_C nnResult nnhttpConnectionConnect(nnhttpConnection* this_); 975 976 /*! 977 @brief 対応する C++ 関数 @ref nn::http::Connection::ConnectAsync を参照してください。 978 */ 979 NN_EXTERN_C nnResult nnhttpConnectionConnectAsync(nnhttpConnection* this_); 980 981 /*! 982 @brief 対応する C++ 関数 @ref nn::http::Connection::Cancelを参照してください。 983 */ 984 NN_EXTERN_C nnResult nnhttpConnectionCancel(nnhttpConnection* this_); 985 986 /*! 987 @brief 対応する C++ 関数 @ref nn::http::Connection::Readを参照してください。 988 */ 989 NN_EXTERN_C nnResult nnhttpConnectionRead(nnhttpConnection* this_, u8* pBodyBuf, u32 bufLen); 990 991 /*! 992 @brief 対応する C++ 関数 @ref nn::http::Connection::GetStatusを参照してください。 993 */ 994 NN_EXTERN_C nnResult nnhttpConnectionGetStatus(const nnhttpConnection* this_, nnHttpStatus* pStatusBuf); 995 996 /*! 997 @brief 対応する C++ 関数 @ref nn::http::Connection::GetProgressを参照してください。 998 */ 999 NN_EXTERN_C nnResult nnhttpConnectionGetProgress(const nnhttpConnection* this_, u32* pReceivedLen, u32* pContentLen); 1000 1001 /*! 1002 @brief 対応する C++ 関数 @ref nn::http::Connection::GetErrorを参照してください。 1003 */ 1004 NN_EXTERN_C nnResult nnhttpConnectionGetError(const nnhttpConnection* this_, nnHttpResultCode* pResultCodeBuf); 1005 1006 1007 1008 /* 接続設定 */ 1009 /*! 1010 @brief 対応する C++ 関数 @ref nn::http::Connection::SetProxyを参照してください。 1011 */ 1012 NN_EXTERN_C nnResult nnhttpConnectionSetProxy(nnhttpConnection* this_, const char* pProxyName, u16 port, const char* pUserName, const char* pPassword); 1013 1014 /*! 1015 @brief 対応する C++ 関数 @ref nn::http::Connection::SetBasicAuthorizationを参照してください。 1016 */ 1017 NN_EXTERN_C nnResult nnhttpConnectionSetBasicAuthorization(nnhttpConnection* this_, const char *pUserName, const char *pPassword); 1018 1019 /*! 1020 @brief 対応する C++ 関数 @ref nn::http::Connection::SetSocketBufferSizeを参照してください。 1021 */ 1022 NN_EXTERN_C nnResult nnhttpConnectionSetSocketBufferSize(nnhttpConnection* this_, u32 size); 1023 1024 1025 /* HTTPリクエスト設定 */ 1026 /*! 1027 @brief 対応する C++ 関数 @ref nn::http::Connection::AddHeaderFieldを参照してください。 1028 */ 1029 NN_EXTERN_C nnResult nnhttpConnectionAddHeaderField(nnhttpConnection* this_, const char* pLabel, const char* pValue); 1030 1031 /*! 1032 @brief 対応する C++ 関数 @ref nn::http::Connection::AddPostDataAsciiを参照してください。 1033 */ 1034 NN_EXTERN_C nnResult nnhttpConnectionAddPostDataAscii(nnhttpConnection* this_, const char* pLabel, const char* pValue); 1035 1036 /*! 1037 @brief 対応する C++ 関数 @ref nn::http::Connection::AddPostDataBinaryを参照してください。 1038 */ 1039 NN_EXTERN_C nnResult nnhttpConnectionAddPostDataBinary(nnhttpConnection* this_, const char* pLabel, const char* pValue, u32 length); 1040 1041 /*! 1042 @brief 対応する C++ 関数 @ref nn::http::Connection::AddPostDataRawを参照してください。 1043 */ 1044 NN_EXTERN_C nnResult nnhttpConnectionAddPostDataRaw(nnhttpConnection* this_, const char* pValue, u32 length); 1045 1046 /*! 1047 @brief 対応する C++ 関数 @ref nn::http::Connection::SetLazyPostDataSettingを参照してください。 1048 */ 1049 NN_EXTERN_C nnResult nnhttpConnectionSetLazyPostDataSetting(nnhttpConnection* this_, nnHttpPostDataType dataType); 1050 1051 1052 /*! 1053 @brief 対応する C++ 関数 @ref nn::http::Connection::NotifyFinishSendPostDataを参照してください。 1054 */ 1055 NN_EXTERN_C nnResult nnhttpConnectionNotifyFinishSendPostData(nnhttpConnection* this_); 1056 1057 /*! 1058 @brief 対応する C++ 関数 @ref nn::http::Connection::SetPostDataEncodingを参照してください。 1059 */ 1060 NN_EXTERN_C nnResult nnhttpConnectionSetPostDataEncoding(nnhttpConnection* this_, nnHttpEncodingType type); 1061 1062 /*! 1063 @brief 対応する C++ 関数 @ref nn::http::Connection::SendPostDataAsciiを参照してください。 1064 */ 1065 NN_EXTERN_C nnResult nnhttpConnectionSendPostDataAscii(nnhttpConnection* this_, const char* pLabel, const char* pValue); 1066 1067 /*! 1068 @brief 対応する C++ 関数 @ref nn::http::Connection::SendPostDataBinaryを参照してください。 1069 */ 1070 NN_EXTERN_C nnResult nnhttpConnectionSendPostDataBinary(nnhttpConnection* this_, const char* pLabel, const void* pValue, size_t length); 1071 1072 /*! 1073 @brief 対応する C++ 関数 @ref nn::http::Connection::SendPostDataRawを参照してください。 1074 */ 1075 NN_EXTERN_C nnResult nnhttpConnectionSendPostDataRaw(nnhttpConnection* this_, const void* pValue, u32 length); 1076 1077 1078 1079 /* HTTPレスポンス取得 */ 1080 /*! 1081 @brief 対応する C++ 関数 @ref nn::http::Connection::GetHeaderFieldを参照してください。 1082 */ 1083 NN_EXTERN_C nnResult nnhttpConnectionGetHeaderField(const nnhttpConnection* this_, const char* pLabel, char* pFieldBuf, size_t bufSize, size_t* pFieldLengthCourier); 1084 1085 /*! 1086 @brief 対応する C++ 関数 @ref nn::http::Connection::GetHeaderAllを参照してください。 1087 */ 1088 NN_EXTERN_C nnResult nnhttpConnectionGetHeaderAll(const nnhttpConnection* this_, char* pHeaderBuf, size_t bufSize, size_t* pLengthCourier); 1089 1090 /*! 1091 @brief 対応する C++ 関数 @ref nn::http::Connection::GetStatusCodeを参照してください。 1092 */ 1093 NN_EXTERN_C nnResult nnhttpConnectionGetStatusCode(const nnhttpConnection* this_, s32* pStatusCodeCourier); 1094 1095 /*! 1096 @brief 対応する C++ 関数 @ref nn::http::Connection::GetSslErrorを参照してください。 1097 */ 1098 NN_EXTERN_C nnResult nnhttpConnectionGetSslError(const nnhttpConnection* this_, s32* pResultCodeBuf); 1099 1100 /*! 1101 @brief 対応する C++ 関数 @ref nn::http::Connection::SetVerifyOptionを参照してください。 1102 */ 1103 NN_EXTERN_C nnResult nnhttpConnectionSetVerifyOption(nnhttpConnection* this_, u32 verifyOption); 1104 1105 /*! 1106 @brief 対応する C++ 関数 @ref nn::http::Connection::SetRootCaを参照してください。 1107 */ 1108 NN_EXTERN_C nnResult nnhttpSetRootCa(nnhttpConnection* this_, const u8 *pCertData, size_t certDataSize); 1109 1110 /*! 1111 @brief 対応する C++ 関数 @ref nn::http::Connection::SetRootCaを参照してください。 1112 */ 1113 NN_EXTERN_C nnResult nnhttpSetInternalRootCa( nnhttpConnection* this_, NnHttpInternalCaCertId inCaCertName ); 1114 1115 /*! 1116 @brief 対応する C++ 関数 @ref nn::http::Connection::SetRootCaStoreを参照してください。 1117 */ 1118 NN_EXTERN_C nnResult nnhttpSetRootCaStore( nnhttpConnection* this_, nnhttpCertStore* pCertStore); 1119 1120 /*! 1121 @brief 対応する C++ 関数 @ref nn::http::Connection::SetClientCertを参照してください。 1122 */ 1123 NN_EXTERN_C nnResult nnhttpSetClientCert(nnhttpConnection* this_, const u8* pCertData, size_t certDataSize, const u8* pPrivateKeyData, size_t privateKeyDataSize); 1124 1125 /*! 1126 @brief 対応する C++ 関数 @ref nn::http::Connection::SetClientCertを参照してください。 1127 */ 1128 NN_EXTERN_C nnResult nnhttpSetInternalClientCert(nnhttpConnection* this_, NnHttpInternalClientCertId inClientCertName ); 1129 1130 /*! 1131 @brief 対応する C++ 関数 @ref nn::http::Connection::SetClientCertを参照してください。 1132 */ 1133 NN_EXTERN_C nnResult nnhttpSetClientCertObj(nnhttpConnection* this_, nnhttpClientCert* pClientCert); 1134 1135 1136 1137 1138 /*! 1139 @brief 対応する C++ 関数 @ref nn::http::Connection::DisableVerifyOptionForDebugを参照してください。 1140 */ 1141 NN_EXTERN_C nnResult nnhttpDisableVerifyOptionForDebug(nnhttpConnection* this_, u32 verifyOption); 1142 1143 /*! 1144 @} 1145 1146 @} 1147 */ 1148 1149 #endif /* NN_HTTP_HTTP_CONNECTION_H_ */ 1150