服务器端,用c#发布Web Service的asmx文件,web.config文件中指定:
<globalization requestEncoding="GB2312" responseEncoding="GB2312"/>客户端delphi6编写com组件,声明引用MSXML2_TLB.pas
声明变量:
XmlDoc: DOMDocument;
MyHttp: XMLHTTP;
xmlText:String;xmlText := xmlText + '<?xml version="1.0" encoding="utf-8"?>';
...
xmlText := xmlText + '<p_szContent>测试</p_szContent>';
....
XmlDoc := CoDOMDocument.Create;
xmlDoc.async := false;
xmlDoc.loadXML(xmlText);
xmlDoc.save('1.xml'); //这句检查1.xml,可以正常显示中文,说明xml数据没问题 MyHttp := CoXMLHTTP.Create;
MyHttp.open('POST','http://localhost/test.asmx',false,'','');
MyHttp.setRequestHeader('Content-Type','text/xml; charset=utf-8');
//改为如下一样不行
//MyHttp.setRequestHeader('Content-Type','text/xml; charset=gb2312);
MyHttp.setRequestHeader('SOAPAction','http://localhost/webservices/Helloworld');
MyHttp.send(xmlDoc); xmlText := MyHttp.responseText; //能正常返回中文结果现在问题是:提交的中文"测试"到服务器,打印出是乱码,如何解决....
<globalization requestEncoding="GB2312" responseEncoding="GB2312"/>客户端delphi6编写com组件,声明引用MSXML2_TLB.pas
声明变量:
XmlDoc: DOMDocument;
MyHttp: XMLHTTP;
xmlText:String;xmlText := xmlText + '<?xml version="1.0" encoding="utf-8"?>';
...
xmlText := xmlText + '<p_szContent>测试</p_szContent>';
....
XmlDoc := CoDOMDocument.Create;
xmlDoc.async := false;
xmlDoc.loadXML(xmlText);
xmlDoc.save('1.xml'); //这句检查1.xml,可以正常显示中文,说明xml数据没问题 MyHttp := CoXMLHTTP.Create;
MyHttp.open('POST','http://localhost/test.asmx',false,'','');
MyHttp.setRequestHeader('Content-Type','text/xml; charset=utf-8');
//改为如下一样不行
//MyHttp.setRequestHeader('Content-Type','text/xml; charset=gb2312);
MyHttp.setRequestHeader('SOAPAction','http://localhost/webservices/Helloworld');
MyHttp.send(xmlDoc); xmlText := MyHttp.responseText; //能正常返回中文结果现在问题是:提交的中文"测试"到服务器,打印出是乱码,如何解决....
MyHttp.setRequestHeader('Content-Type','text/xml; charset=utf-8');//这儿再调用已经无效了
DELPHI6+SP2带的WEBSERVICE支持性能足够可靠了,不知道楼主为什么要用这种方式使用WEBSERVICE.
MyHttp.setRequestHeader('Content-Type','text/xml; charset=utf-8');
放在open前面,不报错误??? ;)因为服务器端用的是.net的web服务。请只针对我的问题解决问题,其他建议免谈。我的上述代码发送E文都没有问题,只是中文有问题
你可以用工具截获你发送的数据包,没有工具也可以自己写一个接收数据POST数据的程序,记入文件日志中,先确实客户端请求数据是否严格按约定。
将中文进行base64编码,服务器端解码就ok了