0

我正在编写一个返回 byte[] 的简单 Web 方法,并且 byte[] 由 UTF-8 编码。我调查了相关的 WSDL 和肥皂消息,似乎底层的 Web 服务堆栈将使用 base64 编码?

由于各种原因,我无法使用或将返回的字节 [] 从 UTF-8 重新编码为 base64。将base64编码修改为UTF-8编码有什么想法吗?

这是我在 WSDL 中的相关 Web 方法、SOAP 消息和相关类型

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()andConvert.FromBase64()呢?这些函数正是这样做的:将byte数组转换为 base64 string,反之亦然。

于 2009-02-22T15:10:52.347 回答