1

問題: 私は .NET HTTP ハンドラーが XML の HTTP POST を受け取っていると思いますが、これは Java システムから発信されたものだと思います。1 つの要素には、base64 文字列でエンコードされたドキュメントが含まれています (現在のテスト ファイルは PDF です)。元の PDF を取得して .NET から base64 文字列を生成すると、それと提供された XML の対応するテキストとの間にいくつかの不一致があります。

次の 3 つのいずれかが発生する場所が多数あります。

  1. XML ファイルは、.NET がプラスを配置する場所に 1 つのスペースを配置します。
  2. 同様に、XML ファイルには、.NET の plusses に対して挿入された連続したスペースのペアがあります。

    PgplbmRv YmoKNSAw 対。 PgplbmRv++YmoKNSAw

  3. XML ファイルには、.NET の plussesは対照的に、挿入された連続したスペースのペアがあり、追加のスペースが XML のバージョンの近くに追加されていることがあります。

    3kuPs 85QZWYaw BsMNals 対。 3kuPs 85QZWYaw++BsMNals

  4. ソース XML には 4 つのスペース (下の表示は 2 つのスペースのように見えます) がありますが、.NET には連続するプラスのペアがあります。

    vGDmKEJ gnJeOK 対。 vGDmKEJ++gnJeOK

また、ソース (Java で作成された?) データにはプラスがありません。

質問: これらの不一致の原因を特定できる人はいますか? 検索して置き換える信頼できるパターンが見当たらないので、どのように対処すればよいでしょうか?

編集: POST が到着すると、オブジェクトに逆シリアル化する前に URL デコードを行います。

public void ProcessRequest(HttpContext context)
{
    try
    {
        StreamReader reader = new StreamReader(context.Request.InputStream);
        context.Response.ContentType = "text/plain";
        var decodedRequest = HttpUtility.UrlDecode(reader.ReadToEnd());
        ...
4

2 に答える 2

3

プラスは、スペースがプラスで表される何らかの URLDecoding によってスペースに変換されている可能性があります。実際の base64 でエンコードされた結果にスペースが含まれていてはなりません。スペースは無効な文字です。単純な検索と置換で修正できるかもしれませんが、結果がどのように URLDecode されているかを特定したい場合があります。

于 2013-05-13T17:11:08.190 に答える