soap协议调用Webservice与NuSoap java/C# webservice中文乱码问题

方法一:直接调用

 代码如下 复制代码
<?   
  
  
include(‘NuSoap.php’);   
  
// 创建一个soapclient对象,参数是server的WSDL   
$client = new soapclient(‘http://localhost/Webservices/Service.asmx?WSDL’, 'wsdl’);   
  
// 参数转为数组形式传递   
$aryPara = array(‘strUsername’=>’username’, ‘strPassword’=>MD5(‘password’));   
  
// 调用远程函数   
$aryResult = $client->call(‘login’,$aryPara);   
  
//echo $client->debug_str;   
    
  
$document=$client->document;   
echo <<<SoapDocument   
<?xml version=”1.0″ encoding=”GB2312″?>   
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/” xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:SOAP-ENC=”http://schemas.xmlsoap.org/soap/encoding/” xmlns:si=”http://soapinterop.org/xsd“>   
<SOAP-ENV:Body>   
$document  
</SOAP-ENV:Body>   
</SOAP-ENV:Envelope>   
SoapDocument;   
  
?>   

方法二:代理方式调用

 

 代码如下 复制代码
<?   
  
  
require(‘NuSoap.php’);   
  
//创建一个soapclient对象,参数是server的WSDL   
$client=new soapclient(‘http://localhost/Webservices/Service.asmx?WSDL’, 'wsdl’);   
  
//生成proxy类   
$proxy=$client->getProxy();   
  
//调用远程函数   
$aryResult=$proxy->login(‘username’,MD5(‘password’));   
  
//echo $client->debug_str;   
    
  
$document=$proxy->document;   
echo <<<SoapDocument   
<?xml version=”1.0″ encoding=”GB2312″?>   
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/” xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/envelope/” xmlns:xsd=”http://www.w3.org/2001/XMLSchema” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xmlns:SOAP-ENC=”http://schemas.xmlsoap.org/soap/encoding/” xmlns:si=”http://soapinterop.org/xsd“>   
<SOAP-ENV:Body>   
$document  
</SOAP-ENV:Body>   
</SOAP-ENV:Envelope>   
SoapDocument;   
  
?>   

 
NuSoap调用WebService出现乱码的原因:

通常我们进行WebService开发时都是用的UTF-8编码,这时我们需要设置:

 代码如下 复制代码

$client->soap_defencoding = ‘utf-8′;

同时,需要让xml以同样的编码方式传递:

 代码如下 复制代码

$client->xml_encoding = ‘utf-8′;

至此应该是一切正常了才对,但是我们在输出结果的时候,却发现返回的是乱码。

NuSoap调用WebService出现乱码的解决方法:

实际上,开启了调试功能的朋友,相信会发现$client->response返回的是正确的结果,为什么

 代码如下 复制代码

$result = $client->call($action, array(‘parameters’ => $param));

却是乱码呢?

研究过NuSoap代码后我们会发现,当xml_encoding设置为UTF-8时,NuSoap会检测decode_utf8的设置,如果为true,会执行 PHP 里面的utf8_decode函数,而NuSoap默认为true,因此,我们需要设置:

PHP 代码

 代码如下 复制代码
$client->soap_defencoding = ‘utf-8′;   
$client->decode_utf8 = false;   
$client->xml_encoding = ‘utf-8′;   
时间: 2024-10-31 10:42:23

soap协议调用Webservice与NuSoap java/C# webservice中文乱码问题的相关文章

【技术贴】java插入mysql中文乱码解决|java插入mysql数据库显示问号?

[技术贴]java插入mysql中文乱码解决|java插入mysql数据库显示问号?   在你要连接到mysql 的代码里写上?useUnicode=true&characterEncoding=UTF-8" 比如 "jdbc:mysql://localhost:3306/chenluancl1?useUnicode=true&characterEncoding=UTF-8", "root","密码"

Java中解决中文乱码问题的方法

Java中解决中文乱码问题的方法 public  String   chStr(String string){   if(string==null){      string="";   }else{      try{         string=(new String(string.getBytes("iso-8859-1"),"GB3212")).trim();      }catch(Exception e){         e.pr

在ASP.NET Web Application中通过SOAP协议调用Bing搜索服务

本文介绍了如何在ASP.NET Web Application中将Bing搜索作为Web Service来使用,并通过HTTP的SOAP协议在ASP.NET Web Application中调用Bing搜索功能.当然,我们也可以使用XML和JSON来调用Bing搜索服务,稍后会给出一些相关的例子. 本文中我将向大家演示下面这些内容: 创建一个Web Application与Bing搜索服务进行交互 添加Bing搜索服务的引用 使用Bing SourceTypes演示在线搜索功能 Bing搜索服务

Java Web Project 中文乱码全是问号,已设为UTF8

问题描述 大家好:如题,自己研究了很久,实在想不出为什么,特意向大家请教:我的工程有一个Test.java和index.jsp文件,通过jsp文件调用java文件中的函数时,所有中文都成了问号,具体表现在:1.如果Test.java中有一个函数作用是System.out.println("哈哈");,通过index.jsp调用,则控制台会出现??,所有包含中文值的变量输出时也是一样的情况,如果把变量保存成文本文件打开,内容还是??.所有的编码都已经改成UTF8,jsp头部也加入了res

Java Web开发项目中中文乱码解决方法汇总_java

Java Web项目中,解决中文乱码方法总结如下 第一种情况:调用jsp页面中文显示乱码问题描述:通过浏览器调用jsp页面,在浏览器中显示的中文内容出现乱码. 解决方法:首先确认本jsp在编辑器中保存文件内容时,使用的是utf-8的编码格式,然后在jsp页面的开始处添加<%@ pageEncoding="utf-8"%>就可以解决这种中文乱码问题 第二种情况:调用servlet页面显示乱码问题描述:通过浏览器调用servlet,servlet在浏览器中显示的内容出现乱码.

java表单提交中文乱码的解决方法_java

本文实例为大家分享了java表单提交中文乱码的解决方法,供大家参考,具体内容如下 主页index.xml <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>servlet演示</title> </head> <body> <h2&

java压缩zip文件中文乱码问题解决方法_java

通常用java来打包文件生成压缩文件后,有如下两个地方会出现乱码 : 1.内容的中文乱码问题,这个问题网上很多人给出了解决方法,主要有两种方法:一是修改sun的源码:另一个是使用开源的类库org.apache.tools.zip.ZipOutputStream和org.apache.tools.zip.ZipEntry,这两个类ant.jar中有,可以直接下载使用即可,毫无疑问,选择后者更方便 2.压缩文件注释的中文乱码问题:zos.setComment("中文测试");这个问题网上对

java web请求和响应中出现中文乱码问题的解析_java

说明:在计算机中保存的一切文本信息是以一定的编码表(0,1,0,1)来保存我们所认识的字符(汉字或英文字符),由字符到计算机存储的二进制过程是编码,由读取二进制到文本的过程称为解码.而字符编码有多种不同的编码表,所以,如果编码格式和解码格式不是同一个码表就会出现乱码.想要避免出现乱码,需要使保存和读取时使用相同的码表. 在java web编程中经常会出现乱码,现在详细讲解一下如何进行设置,避免乱码 1 网页编码 在编写网页的时候,需要指定网页的编码格式,使用<meta http-equiv=&quo

java中文乱码之解决URL中文乱码问题的方法_java

我们主要通过两种形式提交向服务器发送请求:URL.表单.而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面.通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了.不同的操作系统.不同的浏览器.不同的网页字符集,将导致完全不同的编码结果.如果程序员要把每一种结果都考虑进去,是不是太恐怖了?有没有办法,能够保证客户端只用一种编码方法向服务器发出请求? 有!这里我主要提供以下几种方法 一.javascript使用javascript编码不给浏览器插手的机会,编码之后