Reputation: 45761
I am writing a simple web method which returns byte[], and the byte[] is encoded by UTF-8. I have investigated related WSDL and soap message, seems the underlying web services stack will use base64 encoding?
For various reasons, I can not use or re-encode my return byte[] from UTF-8 to base64. Any ideas to modify the base64 encoding to UTF-8 encoding?
Here is my related web methods, SOAP message and related type in WSDL
Web service server side code
[WebMethod]
public byte[] HelloWorld2()
{
return utf8encodedbytes;
}
SOAP response
<?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>
related type in WSDL
xsd:base64Binary
thanks in advance, George
Upvotes: 0
Views: 7109
Reputation: 121294
So what's stopping you from using Convert.ToBase64()
and Convert.FromBase64()
? These functions do exactly that: converting byte
array to base64 string
s and vica versa.
Upvotes: 1
Reputation: 1499840
Your question doesn't really make a lot of sense I'm afraid - byte arrays aren't encoded with text encodings like UTF-8. You normally apply a UTF-8 encoding to text to get a byte array. To transfer arbitrary byte arrays in XML you should then use base64.
If you want to transfer text you should just return a string to start with.
What is the original data, before any kind of encoding happens? If it's a byte array, you should return a byte array and the XML should automatically contain base64-encoded data. If it's text, you should return a string and let XML cope with the encoding.
Upvotes: 9