如何向Webservice里传递类参数

发布网友

我来回答

1个回答

热心网友

很多人在调用WebService所提供方法的时候,发现如果当字符串中含有中文,传到WebService端就发现是乱码,这是由于WebService默认的编码是UTF-8
,当调用端和接收端用不同编码进行转换的时候,就会出现此类问题,如何解决这类问题呢,具体要根据你的环境而定。如果WebService的代码是你可控的,那么修改起来很简单,只需要把WebService工程中的web.config文件进行修改,即把使用到utf-8地方改成gb2312就行了。如果WebService的代码是你不可控的,即你无法去修改WebService工程中的web.config文件,那么做起来就比较费事了,就是你需要亲自把当前字符串转换成UTF-8的编码,具体如下:///<summary///Change
string
from
default
encoding
to
UTF-8
encoding///</summary///<param
name=sValue
the
string
to
be
changed</param///<returns
if
changed
successfully,
return
string
under
UTF-8
encoding;///
else
return
null///</returnspublicstaticstringGetUnicodeString(stringsValue
){
Encoding
def
=
Encoding.Default;
Encoding
unicode
=
Encoding.UTF8;
//
Check
whether
default
encoding
is
same
as
UTF-8
encodingif(
def
==
unicode
)returnsValue;
//
Check
parameterif(
sValue
==null||
sValue.Length
==
0
)returnsValue;
//
Convert
the
string
into
a
byte[].byte[]
defBytes
=
def.GetBytes(
sValue
);
//
Perform
the
conversion
from
one
encoding
to
the
other.byte[]
unicodeBytes
=
Encoding.Convert(
def,
unicode,
defBytes);char[]
uniChars
=newchar[
unicodeBytes.Length]
;for(inti
=
0;
i
<
unicodeBytes.Length;
i++
)
uniChars[i]
=
(char)(unicodeBytes[i]);returnnewstring(
uniChars
);}那么调用WebService之前,需要把含有中文的字符串用以上的函数进行转换,然后用转换后的字符串去调用WebService
,就可以避免在WebService中出现乱码现象。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com