看了网上的几个文章,SOAP的示例布局都不清晰,不能马上入手,特意写个例子与大家分享,同时记录备用。

当前环境:VS2013 + WPF

private void Button_Click(object sender, RoutedEventArgs e)
{
string url = "http://www.webxml.com.cn/WebServices/WeatherWS.asmx";
string soap = SetSoapMessage();// 构造soap请求信息 string result = GetSOAPReSource(url, soap); txtShow.Text = result.Replace(">", ">\n").Replace("<string>\n", "<string>");
} #region 发起SOAP请求
/// <summary>
/// 发起SOAP请求
/// </summary>
/// <param name="url">URL</param>
/// <param name="datastr">数据</param>
/// <returns></returns>
public static string GetSOAPReSource(string url, string datastr)
{
//发起请求
Uri uri = new Uri(url);
WebRequest webRequest = WebRequest.Create(uri);
webRequest.ContentType = "text/xml; charset=utf-8";
webRequest.Method = "POST";
using (Stream requestStream = webRequest.GetRequestStream())
{
byte[] paramBytes = Encoding.UTF8.GetBytes(datastr.ToString());
requestStream.Write(paramBytes, , paramBytes.Length);
} //响应
WebResponse webResponse = webRequest.GetResponse();
using (StreamReader myStreamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))
{
string result = "";
return result = myStreamReader.ReadToEnd();
}
}
#endregion #region 构造soap请求信息
string SetSoapMessage()
{
string header = "";
string body = "";
string fault = ""; body = "<getRegionCountry xmlns=\"http://WebXml.com.cn/\" />"; return GetSoapMessageByBase(header, body, fault);
}
#endregion #region SOAP消息基本结构
/// <summary>
/// SOAP消息基本结构
/// </summary>
/// <param name="header">头部(包含Header)</param>
/// <param name="body">内容主体(包含Body)</param>
/// <param name="fault">错误提示(包含Fault)</param>
/// <returns></returns>
string GetSoapMessageByBase(string header, string body, string fault)
{
StringBuilder soap = new StringBuilder();
soap.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
soap.Append("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">");
//添加头部
if (!string.IsNullOrWhiteSpace(header))
{
soap.Append("<soap:Header>");
soap.Append(header);
soap.Append("</soap:Header>");
}
//添加内容
if (!string.IsNullOrWhiteSpace(body))
{
soap.Append("<soap:Body>");
soap.Append(body); //添加错误
if (!string.IsNullOrWhiteSpace(fault))
{
soap.Append("<soap:Fault>");
soap.Append(fault);
soap.Append("</soap:Fault>");
} soap.Append("</soap:Body>");
} soap.Append("</soap:Envelope>"); return soap.ToString();
}
#endregion

SOAP简单示例的更多相关文章

  1. Web API 简单示例

    一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...

  2. 基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

    一.前言 至今为止编程开发已经11个年头,从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展,从无畏无知的懵懂少年,到现在的中年大叔,从中的酸甜苦辣也只有本人自知.随着 ...

  3. Linux下的C Socket编程 -- server端的简单示例

    Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...

  4. C# 构建XML(简单示例)

    C# 构建XML的简单示例: var pars = new Dictionary<string, string> { {"url","https://www. ...

  5. 根据juery CSS点击一个标签弹出一个遮罩层的简单示例

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. ACEXML解析XML文件——简单示例程序

    掌握了ACMXML库解析XML文件的方法后,下面来实现一个比较完整的程序. 定义基本结构 xml文件格式如下 <?xml version="1.0"?> <roo ...

  7. demo工程的清单文件及activity中api代码简单示例

    第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...

  8. spring-servlet.xml简单示例

    spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 <!-- springMVC简单配置 --> <?xml versi ...

  9. SignalR 简单示例

    一.什么是 SignalR ASP.NET SignalR is a library for ASP.NET developers that simplifies the process of add ...

随机推荐

  1. 解决eclipse中mybatis的xml配置文件无代码提示问题

    https://blog.csdn.net/IRainReally/article/details/81743506

  2. 在 Ubuntu16.04 中搭建 Spark 单机开发环境 (JDK + Scala + Spark)

    1.准备 本文主要讲述如何在Ubuntu 16.04 中搭建 Spark 2.11 单机开发环境,主要分为 3 部分:JDK 安装,Scala 安装和 Spark 安装. JDK 1.8:jdk-8u ...

  3. 从零开始学Kotlin-控制语句(4)

    从零开始学Kotlin基础篇系列文章 条件控制-if var a=10 var b=20 if(a>b) print(a) if(a>b){ print(a) }else{ print(b ...

  4. 使用ejs模板引擎

    let express = require('express'); let fs = require('fs'); let ejs = require('ejs'); let app = expres ...

  5. Ubuntu忘记MySQL密码重设方法

    ====================忘了mysql密码,从网上找到的解决方案记录在这里==================== 结束当前正在运行的mysql进程 # /etc/init.d/mys ...

  6. [转]MySQL 数据库事务隔离级别

    然后说说修改事务隔离级别的方法: 1. 全局修改,修改 mysql.ini 配置文件,在最后加上 1 #可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATAB ...

  7. ITSS相关的名词解释

    1.ITSM(IT Service Management)IT服务管理.从宏观的角度可以理解为一个领域或行业,人中观的角度可以理解为一种IT管理的方法论,从微观的角度可以理解为是一套协同动作的流程.从 ...

  8. 牛B的VUE讲解

    https://www.cnblogs.com/lvhw/p/8286544.html

  9. Jquery 获取屏幕及滑块及元素的高度及距离

    alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height()); //浏览器时下窗口文档的高度 alert($(docum ...

  10. react & monaco editor & vs code

    react & monaco editor & vs code monaco-editor https://microsoft.github.io/monaco-editor/inde ...