0

byte []を返す単純なWebメソッドを作成していますが、byte[]はUTF-8でエンコードされています。関連するWSDLとSOAPメッセージを調査しましたが、基盤となるWebサービススタックはbase64エンコーディングを使用するようですか?

さまざまな理由で、リターンバイト[]をUTF-8からbase64に使用または再エンコードできません。base64エンコーディングをUTF-8エンコーディングに変更するアイデアはありますか?

これが私の関連するWebメソッド、SOAPメッセージ、およびWSDLの関連するタイプです。

Webサービスサーバー側のコード

        [WebMethod]
        public byte[] HelloWorld2()
        {
            return utf8encodedbytes;
        }

SOAP応答

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <HelloWorld2Response xmlns="http://tempuri.org/">
      <HelloWorld2Result>base64Binary</HelloWorld2Result>
    </HelloWorld2Response>
  </soap:Body>
</soap:Envelope>

WSDLの関連タイプ

xsd:base64Binary

よろしくお願いします、ジョージ

4

2 に答える 2

9

あなたの質問はあまり意味がありません.バイト配列はUTF-8のようなテキストエンコーディングでエンコードされていません. 通常、テキストにUTF-8 エンコーディングを適用して、バイト配列を取得します。XML で任意のバイト配列を転送するには、base64 を使用する必要があります。

テキストを転送したい場合は、最初に文字列を返すだけです。

何らかのエンコーディングが行われる前の元のデータは何ですか? バイト配列の場合は、バイト配列を返す必要があり、XML には base64 でエンコードされたデータが自動的に含まれる必要があります。テキストの場合は、文字列を返し、XML にエンコーディングを処理させる必要があります。

于 2009-02-22T14:40:23.090 に答える
1

Convert.ToBase64()では、 andの使用を妨げているのは何Convert.FromBase64()ですか? これらの関数はまさにそれを行います:byte配列を base64stringに、またはその逆に変換します。

于 2009-02-22T15:10:52.347 に答える