0

簡潔...Webサービス呼び出しから返されたオブジェクトは、変換関数で追加のバイトを使用してマングルを取得します。

基本的に、XDocumentを送信するWebリファレンスがあります

    System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
    Byte[] baXml = encoding.GetBytes(xdoc.ToString());

    object o = MEF_Test.NewSubmission("*********", "*********", baXml);

送信は成功し、xmlドキュメントであると想定しているものが返され、XDocumentに戻ろうとしています。オブジェクトをバイト配列に変換します

    Byte[] baResponse = ObjectToByteArray(o);

この関数を一番下に配置しましたが、エラーがある場所である可能性があります

返されるオブジェクトは10492文字ですが、変換後は28バイト大きくなり、10520のサイズになります。

            string ss = Encoding.UTF8.GetString(baResponse);
            string ss1 = ss.Substring(28);
            XDocument xSubmissionResponse = XDocument.Parse(ss1);

スクリーンショットでは、余分な文字を見ることができます。私は、部分文字列を通過させることによって、それらを通過しようとします。その後、文字列は見栄えが良くなりますが、文字列のさらに先にある16進値0x0Bに関する例外がスローされます。

誰かがこれを見てくれますか?ありがとう。

-可能な限り多くの情報を含むスクリーンショット

リンクが機能することを願って、画像を貼り付けるという評判はありません。

    private static byte[] ObjectToByteArray(Object obj)
    {
       if (obj == null)
          return null;
       BinaryFormatter bf = new BinaryFormatter();
       MemoryStream ms = new MemoryStream();
       bf.Serialize(ms, obj);
       return ms.ToArray();
    }
4

1 に答える 1

1

o はすでにバイトの配列です (デバッガーで見られるように)。再度デシリアライズしても意味がありません。オブジェクト o を byte[] にキャストし、それに対して Encoding.GetString メソッドを実行するだけです。

于 2012-11-08T22:08:02.250 に答える