• 【原创】C# HttpWebRequest 发送SOAP XML


    调用webservice的几种方法:

    方法一:添加web引用(简单/方便 局限客户端是.net)

    方法二:Post xml(本文重点讲述)

    方法三:使用微软MSXML2组件(好像在window server2008上就不支持)

    方法四:在页面上添加form post到服务端

    //创建HttpWebRequest 实例,使用WebRequest.Create
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("服务地址");
    //发送请求
    webRequest.Method = "POST";
    //编码
    webRequest.ContentType = "text/xml";
    string soap = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    soap += "<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 += " <soap:Header>";
    soap += " <SoapHeader xmlns=\"http://www.52taiqiu.com/\">";
    soap += " <Login>" + txtUser.Text + "</Login>";
    soap += " <Password>" + txtPwd.Text + "</Password>";
    soap += " </SoapHeader>";
    soap += " </soap:Header>";

    soap += "<soap:Body>";

    soap += " <Request xmlns=\"http://www.52taiqiu.com/\">";
    soap += " <requestXml><![CDATA[" + txtRequest.Text + "]]></requestXml>";
    soap += " </Request>";
    soap += "</soap:Body>";
    soap += "</soap:Envelope>";

    webRequest.Headers["SoapAction"] = "http://www.52taiqiu.com/Request";

    //字符转字节
    byte[] bytes = Encoding.UTF8.GetBytes(soap);
    Stream writer = webRequest.GetRequestStream();
    writer.Write(bytes, 0, bytes.Length);
    writer.Flush();
    writer.Close();
    string result = "";
    //返回 HttpWebResponse
    try
    {
    HttpWebResponse hwRes = webRequest.GetResponse() as HttpWebResponse;
    if (hwRes.StatusCode == System.Net.HttpStatusCode.OK)
    {//是否返回成功
    Stream rStream = hwRes.GetResponseStream();
    //流读取
    StreamReader sr = new StreamReader(rStream, Encoding.UTF8);
    result = sr.ReadToEnd();
    sr.Close();
    rStream.Close();
    }
    else
    {
    result = "连接错误";
    }
    //关闭
    hwRes.Close();
    txtResponse.Text = result;
    }
    catch (System.Net.WebException ex)
    {
    String responseFromServer = ex.Message.ToString() + " ";
    if (ex.Response != null)
    {
    using (WebResponse response = ex.Response)
    {
    Stream data = response.GetResponseStream();
    using (StreamReader reader = new StreamReader(data))
    {
    responseFromServer += reader.ReadToEnd();
    }
    }
    }
    txtResponse.Text = responseFromServer;
    }

  • 相关阅读:
    软件开发流程
    开心一笑 项目的开发和升级(转载知乎)
    转载编程之美
    etc/hosts文件详解
    自己centos7成功的修改了主机名(记录了该改哪些文件)
    CentOS7修改主机名的三种方法
    /etc/hosts文件修改后如何生效
    如何在Linux中显示和设置主机名(适用ubantu、centos等版本)
    Linux centos7 shell 介绍、 命令历史、命令补全和别名、通配符、输入输出重定向
    hadoop学习笔记(四):HDFS文件权限,安全模式,以及整体注意点总结
  • 原文地址:https://www.cnblogs.com/zhxhdean/p/2546277.html
Copyright © 2020-2023  润新知