分类(WebService)
用Post方式调用WebService
2009/03/03 17:50

以下代码是在WinForm中完成的:
第一步:先将需要Post的XML写成一个文件,这里写成test.xml,调用的时候将其中的参数修改以下就可以了,以下是一个样本:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetOrderformInfo xmlns="http://samples.com/">
      <orderid>00001</orderid>
      <leaguerid>0</leaguerid>
      <prjtype>4</prjtype>
    </GetOrderformInfo>
  </soap:Body>
</soap:Envelope>

第二步:CS代码:
/// <summary>
        /// 调用WebService的方法
        /// </summary>
        /// <param name="filename">POST所用文件</param>
        /// <param name="requestURL">调用地址</param>
        /// <param name="SOAPActionURL"></param>
        /// <returns></returns>
        private string Post(string filename,string requestURL,string SOAPActionURL)
        {
            XmlDataDocument doc = new XmlDataDocument();
            doc.Load(filename);
            byte[] data = System.Text.Encoding.UTF8.GetBytes(doc.OuterXml);
            WebRequest request = WebRequest.Create(requestURL);
            request.Method = "POST";
            request.Headers.Add("SOAPAction", SOAPActionURL);
            request.Headers.Add("ContentLength", data.Length.ToString());
            request.ContentType = "text/xml; charset=utf-8";

            Stream OWrite = request.GetRequestStream();
            OWrite.Write(data, 0, data.Length);
            OWrite.Close();

            Stream oRead = null;
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            oRead = response.GetResponseStream();
            XmlDataDocument resultdoc = new XmlDataDocument();
            resultdoc.Load(oRead);
            return resultdoc.InnerText.ToString();
        }

private void button5_Click(object sender, EventArgs e)
        {
            string filename = AppDomain.CurrentDomain.BaseDirectory + "xmlfiles/UpdatePaymentInfo.xml";
            string requestURL = "http://localhost/samples/test.asmx?op=MyTest";
            string SOAPActionURL = "http://samples.com/MyTest";
            /*这里可以增加修改XML文件参数的代码....*/
            richTextBox1.Text = Post(filename, requestURL, SOAPActionURL).Trim();   //这里调用后显示结果
        }

注:XML样本和SOAPAction地址在WebService的请求和响应示例里面有说明

Tags: WebService,ASP.NET
相关日志:
+引用(0) |
发表评论
昵称  密码  游客无需密码
网址  电邮  注册
验证码 请输入左侧图片中的字符
记住我