C 中发送HttpPost请求来调用WebService

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

一、Webservice调用的三种方式:

 

Webservice调用1:浏览器中输入以下URL,然后再返回的页面输入参数,提交实现调用
http://localhost/WebService/MyService.asmx?op=MyAction

 

Webservice调用2:html中通过表单提交来实现调用

 
  
  " />
  
  
 
 

Webservice调用3:在C#中发送HttpPost请求来调用WebService中的MyAction方法,代码如下:

 
  
        void UpdateContactSign()        {           string ServerPage ="http://localhost/WebService/MyService.asmx";            try            {                //ServerPage += "?op=TangramAction";                ServerPage += "/MyAction";//MyAction是WebService中的方法              string strXml="",;//第一个参数              string strData="ContactSign|990011|我的数据";//第二个参数               string res = HttpConnectToServer(ServerPage, strXml, strData);                //MessageBox.Show(res);            }            catch (Exception ex)            {                            }        }        //发送消息到服务器        public string HttpConnectToServer(string ServerPage,string strXml,string strData)        {            string postData = "strXml=" + strXml+"&strData="+strData;            byte[] dataArray = Encoding.Default.GetBytes(postData);            //创建请求            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ServerPage);            request.Method = "POST";            request.ContentLength = dataArray.Length;            request.ContentType = "application/x-www-form-urlencoded";            //创建输入流            Stream dataStream = null;            try            {                dataStream = request.GetRequestStream();            }            catch (Exception)            {                return null;//连接服务器失败            }            //发送请求            dataStream.Write(dataArray, 0, dataArray.Length);            dataStream.Close();            //读取返回消息            string res = string.Empty;            try            {                HttpWebResponse response = (HttpWebResponse)request.GetResponse();                StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);                res = reader.ReadToEnd();                reader.Close();            }            catch (Exception ex)            {                return null;//连接服务器失败            }            return res;        }  
 
 

 

 

二、C#中发送HttpPost请求参数传值的中文乱码处理:

 

1.客户端参数Base64编码处理  在给postData赋值之前,先对 strData进行Base64编码处理,注意加号(’+‘)的替换处理,否则由于加号经过Url传递后变成空格而得不到合法的Base64字符串,修改代码如下:

 
  
     //发送消息到服务器        public string HttpConnectToServer(string ServerPage,string strXml,string strData)        {            //Base64编码 处理中文乱码            byte[] buffer = Encoding.Default.GetBytes(strData);            string Base64StrData = Convert.ToBase64String(buffer).Replace("+", "%2B");//处理加号            string postData = "strXml=" + strXml+"&strData="+Base64StrData;            byte[] dataArray = Encoding.Default.GetBytes(postData);            //创建请求
        .......
        .......       return res;
    }
 
 

2.服务端获取到数据后,先解码再使用。解码的代码如下:

 
  
        public string MyAction(string strXml, string strData)        {            //Base64解码            byte[] buffer = Convert.FromBase64String(strData);            string Data = Encoding.Default.GetString(buffer);                      //方法实现部分代码中凡用到strData的地方 改为使用解码后的Data             ........            ........          }        
 
 

 


           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

你可能感兴趣的:(C 中发送HttpPost请求来调用WebService)