Silk Performer Web API は BDL の dclform セクションにあるフォーム定義を使用して、送信されるフォーム データおよび URL に付加されるクエリ文字列を指定します。
安全でない文字は、クエリ文字列および HTTP リクエスト ボディ内にエンコードする必要があります。 異なる状況の異なるブラウザで使用されるさまざまなエンコード方針に対応するために、Silk Performer ではフォーム フィールドのエンコーディング タイプを指定できます。
これを行うため、BDL 内のフォーム定義の構文が強化されました。この構文を使用すると、フォームとフォーム フィールドの属性を指定できます。
エンコーディング タイプ ENCODE_FORM では、MIME タイプ application/x-www-form-url-encoded に応じて、安全でない文字がエンコードされます。 空白スペースは + 記号でエンコードされ、安全でない文字はそれぞれの 16 進形式の前に % 記号を付けてエンコードされます。
すべての一般的なブラウザは、URL クエリ文字列 (HTTP メソッド GET) および HTTP リクエスト ボディ (HTTP メソッド POST) の両方で、フォームの送信にこのエンコーディング タイプを使用しています。
エンコーディング タイプ ENCODE_FORM は、スクリプトで他のエンコーディング タイプが指定されていないときのデフォルトであるため、明示的に指定する必要はありません。
エンコーディング タイプ ENCODE_ESCAPE では、escape JavaScript 関数に応じて、安全でない文字がエンコードされます。 このエンコーディング タイプは ENCODE_FORM と同様です。 主な違いは、空白スペースが + ではなく %20 でエンコードされることです。
エンコーディング タイプ ENCODE_BLANKS では、空白スペースが %20 でエンコードされます。 他の安全でない文字はエンコードされません。 大部分の一般的なブラウザでは、リンクのターゲット URL にこのエンコーディング タイプを使用します。
エンコーディング タイプ ENCODE_NONE では文字がエンコーディングされません。 このエンコーディング タイプは、通常、JavaScript が escape 関数を使用せずに HTTP リクエストを発行する際に使用されます。
dclform
AD_SERVER_PARAMS <ENCODE_NONE>:
"~userpref" := "12|34|56",
"~requesttime" := "01/01/2002";
FORM_REDIR_LOGIN <ENCODE_NONE> :
"~language" := "EN",
"~logingroup" := "GUEST",
"~transaction" := "TEST",
"~exitUrl" := "http://www.myserver.com/goodbye.html";
LOGIN_FORM_001:
"username" := "testuser",
"password" := "testpassword",
"hash" := "%u2e34!\"" <ENCODE_NONE>,
"platform" := "OS: Win2000, Browser: IE5.5" <ENCODE_BLANKS>;
DOWNLOAD_WHITEPAPER <ENCODE_BLANKS>:
"filename" := "Context management.pdf",
"version" := "V99";