2017-08-11 11 views
0

私はWindows、C++、Win32上でVisual Studio 2015を使用しています。私はスペースと他の安全でない文字を含むURLを持っています。私がエスケープされていないURLをPostmanに貼り付けると、Postmanはそれらを正しくエスケープし、要求は機能します。しかし、エスケープされていないURLをHttpOpenRequest()に入れると、受信システムで検出された文字の一部がエスケープされます。C++のWindows HttpOpenRequest()によって自動的にどのような文字がエスケープされますか?

オリジナル: https://nsw.redacted.com/ScheduledActivitys;zoneId=urn:www.dec.nsw.gov.au:school:8481;contextId=current?where=[(//ScheduledActivitys/ScheduledActivity/ActivityDate> = "2017年8月11日")と(// ScheduledActivitys/ScheduledActivity/ActivityDate < = "2017年8月11日")]

郵便配達:https://nsw.redacted.com/ScheduledActivitys;zoneId=urn:www.dec.nsw.gov.au:school:8481;contextId=current?where=[(//ScheduledActivitys/ScheduledActivity/ActivityDate%3E=%222017-08-10%22)%20and%20(//ScheduledActivitys/ScheduledActivity/ActivityDate%3C=%222017-08-10%22)]

のWininet :
https://nsw.redacted.com/ScheduledActivitys;zoneId=urn:www.dec.nsw.gov.au:school:8481;contextId=current?where=[(//ScheduledActivitys/ScheduledActivity/ActivityDate> = "2017年8月11日")%20および20%(// ScheduledActivitys/ScheduledActivity/ActivityDate < = "2017年8月11日")]

だから私の質問は:私が想定していますどのようなする - 文字をエスケープするmysel f、またはWin32ライブラリに依存してそれらをエスケープするか、Win32 Wininetライブラリの不完全な実装を回避しようとしますか? URLが2回エンコードされる危険はありますか?そして、他の読書では、URLの "クエリ"部分( '?'の後の部分)からエスケープするはずがないようです - そのアドバイスは正しくないのですか? (どんな文字がエスケープされ、なぜMicrosoftが他のものをエスケープするのですか?)

答えて

0

例では、空白以外は何もエンコードされません。それはもちろんありません。 URLを自分でエンコードする必要があります。 Wininetでは有効なURLが必要です。クエリを適切にエンコードしないと、無効です。良いことは、URLエンコーディングは単純な問題であるということです。ほんの数行のコード。

関連する問題