2012-06-13 19 views
8

私はDelphi XE2とIndy 10.5.8.0を使用しています。 TIdHttpのインスタンスがあり、リクエストにカスタムヘッダーを追加する必要があります。ヘッダーの値にはコンマが入っているため、複数のヘッダーに自動的に解析されます。私はそれをしたくありません。カスタムヘッダーのヘッダー値は、まだ1つの文字列であり、コンマ区切り文字に基づいて分割されていない必要があります。TIdHttpリクエストにカスタムヘッダを追加すると、ヘッダ値にカンマが入ります

私はIdHttp1.Request.CustomHeaders.Delimiter := ';'を設定しようとしましたが、成功しませんでした。ヘッダーが分割されないようにする方法はありますか?

procedure SendRequest; 
const HeaderStr = 'URL-Encoded-API-Key VQ0_RV,ntmcOg/G3oA==,2012-06-13 16:25:19'; 
begin 
    IdHttp1.Request.CustomHeaders.AddValue('Authorization', HeaderStr); 
    IdHttp1.Get(URL); 
end; 
+0

IIRCすることができます:IdHttp1.Request.CustomHeaders.Value ['Authorization']:= HeaderStr;すべての「カスタムヘッダー」のために、SSLについて忘れないでください! – ComputerSaysNo

+0

'AddValue()'や 'Value []'のどちらを使っても、文字列は最終的に 'TIdHeaderList.FoldAndInsert()'で終わります。これは、文字列が解析され、分割されてリストに追加されます。 –

答えて

4

最新のIndy 10.5.8 SVNスナップショットを使用してこの問題を再現することはできません。表示された文字列は私のために1行に割り当てられます。

これは、デフォルトではTIdHeaderList.FoldLinesプロパティがTrueに設定されていて、行が空白文字とコンマ文字で折り返されるため、文字列が分割される理由がわかります。私が知る限りでは、あなたのバージョンのIndyとSVNの最新バージョンとの間でフォールディングアルゴリズムにロジック変更はありませんでした。

+0

FoldLinesをFalseに設定すると、そのトリックが実行されました。 DelphiのIndyのドキュメントによれば、FoldLengthはヘッダーの値を(空白またはコンマではなく)折り返すので、折りたたんでも気にしませんでした。素晴らしい文書化されたトリック、感謝レミー! –

+0

'TIdHeaderList.FoldLength'プロパティのデフォルト値は78です。追加する最後のヘッダの長さは75です。したがって、' TIdHeaderList.FoldLines'プロパティがTrueに設定されていても、複数の行に折り返してはなりません。 'TIdHeaderList.FoldLength'プロパティを74以下に短縮すると、あなたのラインが期待どおりに折り畳まれるのが見えます。したがって、あなたのケースでは、 'FoldLength'を75よりも高い値に変更することができます(それがまだない場合)。あるいは、異なる方法で折り畳みを無効にするために' MaxInt'に変更できます。 –

+0

行が折り返されるとき、行の 'FoldLength'位置に最も近い空白/コンマ文字で折り返されます。 –

関連する問題