NHTTP_SetPostDataEncoding

構文


#include <nitroWiFi/nhttp.h>

int NHTTP_SetPostDataEncoding( NHTTPConnectionHandle handle, NHTTPEncodingType type );

引数

handle NHTTP_CreateConnection()で生成した接続ハンドル
type NHTTPEncodingTypeで指定する以下のいずれかのエンコーディング形式
NHTTP_ENCODING_TYPE_URLapplication/x-www-form-urlencoded
NHTTP_ENCODING_TYPE_MULTIPARTmultipart/form-data
NHTTP_ENCODING_TYPE_AUTO自動判定(デフォルト)。
1回でもNHTTP_AddPostDataBinary()を使用していればNHTTP_ENCODING_TYPE_MULTIPARTを、 そうでなければNHTTP_ENCODING_TYPE_URLを自動的に選択します。

返り値

エンコーディング形式の設定に成功すれば0を、
接続ハンドルがNULLの場合、
NHTTP_AddPostDataRaw()を既に接続ハンドルに設定した場合に失敗し-1を返します。

説明

送信すべきHTTPリクエストPOST項目のエンコーディング形式を設定します。
この関数は、NHTTP_AddPostDataAscii()NHTTP_AddPostDataBinary()で設定した送信データをPOSTリクエストデータでどのようにエンコーディングするか明示的に指定するために呼び出します。

枠内 :関数呼び出し例
枠内 :実際に送信されるHTTP POSTリクエストデータ
:NHTTP_AddPostData*関数でアプリケーションが指定した値
:ライブラリが自動的に生成する値

(1) テキストデータのみ送信する際の呼び出し例

NHTTP_SetPostDataEncoding(handle, NHTTP_ENCODING_TYPE_URL);
NHTTP_AddPostDataAscii(handle, label1, value1);
NHTTP_AddPostDataAscii(handle, label2, value2);
Content-Type: application/x-www-form-urlencoded
Content-Length: [length]

URL-encoding([label1]=[value1]&[label2]=[value2])

(2) バイナリデータも送信する際の呼び出し例

NHTTP_SetPostDataEncoding(handle, NHTTP_ENCODING_TYPE_MULTIPART);
NHTTP_AddPostDataAscii(handle, label1, value1);
NHTTP_AddPostDataBinary(handle, label2, value2, value2_length);
Content-Type: multipart/form-data; boundary=[boundary]
Content-Length: [length]

[boundary]
Content-Type: application/octet-stream
Content-Disposition: form-data; name="[label1]"
Content-Transfer-Encoding: binary

[value1]
[boundary]
Content-Type: application/octet-stream
Content-Disposition: form-data; name="[label2]"
Content-Transfer-Encoding: binary

[value2]
[boundary]--

(3) アプリケーションが直接生データを指定して送信する際の呼び出し例

NHTTP_AddPostDataRaw(handle, rawdata, length);
Content-Length: [length]

[rawdata]

参照

NHTTP_AddPostDataAscii, NHTTP_AddPostDataBinary

履歴

2007/05/21 返り値を追記。
2007/04/26 コード例を追記。
2006/10/30 記述ミスを修正。
2006/10/19 説明を追記。
2006/7/25 初版。