关于WebService使用中文参数报错的问题,请教高手。
我在某一个项目中写了个WebService方法,在另一个项目中使用这个方法,使用的方式如下:
string PostUrl = "";
			string indata = "";
			string[] f = { "Verdana", "Serif", "Sans", "Arial" };
			CookieContainer myCookieContainer = new CookieContainer();
			indata = "UserID=Myname&PWD=123456&Data1=&Data1=李晓&Data3="+f	;//传递参数
			PostUrl="http://localhost:1747/test/WebService/myService.asmx/Op1";//访问路径
			HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(PostUrl);
			myHttpWebRequest.CookieContainer = myCookieContainer;
			myHttpWebRequest.Accept = "*/*";
			myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
			myHttpWebRequest.ContentLength = indata.Length;
			myHttpWebRequest.Referer = PostUrl;
			myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322)";
			myHttpWebRequest.Method = "POST";
			myHttpWebRequest.CookieContainer = myCookieContainer;
			Stream myRequestStream = myHttpWebRequest.GetRequestStream();
			StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("UTF-8"));
			myStreamWriter.Write(indata);
			myStreamWriter.Close();
			myRequestStream.Close();
			HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
			myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
			myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri);
			Stream myResponseStream = myHttpWebResponse.GetResponseStream();
			StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("UTF-8"));
			string outdata = myStreamReader.ReadToEnd();
			myStreamReader.Close();
			myResponseStream.Close();
			Response.Write(outdata);		
参数中不包含中文时一切正常,但只有含有中文字符就报如下错:
在写入所有字节之前不能关闭流。
其中我尝试将Encoding.GetEncoding("UTF-8")改为Encoding.GetEncoding("gb2312")	,但都不能解决。
急求解决。
------解决方案--------------------
Assembly code
 
 /**/ 
   ///  <summary> 
   /// 根据指定的信息,调用远程WebService方法 
   ///  </summary> 
   ///  <param name="url">WebService的http形式的地址 </param> 
   ///  <param name="namespace">欲调用的WebService的命名空间 </param> 
   ///  <param name="classname">欲调用的WebService的类名(不包括命名空间前缀) </param> 
   ///  <param name="methodname">欲调用的WebService的方法名 </param> 
   ///  <param name="args">参数列表 </param> 
   ///  <returns>WebService的执行结果 </returns> 
   ///  <remarks> 
   /// 如果调用失败,将会抛出Exception。请调用的时候,适当截获异常。 
   /// 异常信息可能会发生在两个地方: 
   /// 1、动态构造WebService的时候,CompileAssembly失败。 
   /// 2、WebService本身执行失败。 
   ///  </remarks> 
   ///  <example> 
   ///  <code> 
   /// object obj = InvokeWebservice("http://localhost/GSP_WorkflowWebservice/common.asmx","Genersoft.Platform.Service.Workflow","Common","GetToolType",new object[]{"1"}); 
   ///  </code> 
   ///  </example> 
   public static object InvokeWebservice( string url ,string @namespace,string classname, string methodname,object[] args) 
   { 
     try 
     { 
       System.Net.WebClient wc = new System.Net.WebClient(); 
       System.IO.Stream stream = wc.OpenRea