[英]Set encoding between PHP soap server and c# soap client
我有一台PHP SOAP服务器(将nuSOAP与wsdl一起使用)发送html页面的内容。 当然,可以使用不同的编码方式来编码HTML,这就是问题出现的时候了。 如果使用PHP SOAP客户端,则可以发送如下编码:
$clienteSOAP = new SoapClient ("http://test.mine.com/wsdl/filemanager?wsdl",
array ('encoding' => 'ISO-8859-15'));
$clienteSOAP->__soapCall ("Test.uploadHTML",
array (file_get_contents ('/home/КОЛЛЕКЦИЯ_РОДНИК_ПРЕМИУМ.html')));
如果我输入正确的编码,到目前为止,它从未失败过。 但是,当我使用C#客户端时,如何将编码放入Web服务请求中? 在C#中,代码为:
System.IO.StreamReader html = new System.IO.StreamReader (
"C:\\Documents and Settings\\КОЛЛЕКЦИЯ_РОДНИК_ПРЕМИУМ.html"
,System.Text.Encoding.GetEncoding("iso-8859-15"));
string contenido = html.ReadToEnd();
html.Close();
Test.FileManager upload = new Test.FileManager();
string resultado = upload.TestUploadHTML (contenido);
Test.FileManager是wsdl的Web参考,当我看到“上传html”时,某些字符不正确。
提前致谢。
nusoap内部使用php函数xml_parser_create,该函数仅支持: ISO-8859-1,UTF-8和US-ASCII 。 因此,该库无法与其他编码配合使用。 伟大的PacHecoPe ...
更新:就我而言,最好的选择是以原始编码读取存档并将其转换为utf-8:
System.IO.StreamReader html = new System.IO.StreamReader (
"C:\\Documents and Settings\\КОЛЛЕКЦИЯ_РОДНИК_ПРЕМИУМ.html"
,System.Text.Encoding.GetEncoding("iso-8859-15"));
string contenido = html.ReadToEnd();
html.Close();
System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
byte[] bytes = System.Text.Encoding.UTF8.GetBytes (contenido);
string contenidoUTF8 = encoder.GetString(bytes);
upload.RequestEncoding = System.Text.Encoding.GetEncoding("UTF-8");
Test.FileManager upload = new Test.FileManager();
string resultado = upload.TestUploadHTML (contenidoUTF8);
UPDATE2:使用big5之类的UTF-8不支持的编码,上面的代码不能很好地工作。 因此,最好不要将其转换为UTF-8并在wsdl中将html的内容(如base64Binary)设置为参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.