C# 使用 HttpPost 请求调用 WebService
之前调用 WebService 都是直接添加服务引用,然后调用 WebService 方法的,最近发现还可以使用 Http 请求调用 WebService。这里还想说一句,还是 web api 的调用简单。
WebService 服务端代码:
public class WebServiceDemo : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod] public string Sum(string param1, string param2) { int num1 = Convert.ToInt32(param1); int num2 = Convert.ToInt32(param2); int sum = num1 + num2; return sum.ToString(); } }
很简单的代码,只是用于演示。
客户端调用代码:
class Program { static void Main(string[] args) { Program program = new Program(); string url = "http://localhost:12544/WebServiceDemo.asmx"; string method = "Sum"; string num1 = "1"; string num2 = "2"; string result = program.HttpPostWebService(url, method, num1, num2); Console.WriteLine(result); Console.ReadKey(); } public string HttpPostWebService(string url,string method,string num1,string num2) { string result = string.Empty; string param = string.Empty; byte[] bytes = null; Stream writer = null; HttpWebRequest request = null; HttpWebResponse response = null; param = HttpUtility.UrlEncode("param1") + "=" + HttpUtility.UrlEncode(num1) + "&" + HttpUtility.UrlEncode("param2") + "=" + HttpUtility.UrlEncode(num2); bytes = Encoding.UTF8.GetBytes(param); request = (HttpWebRequest)WebRequest.Create(url + "/" + method); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = bytes.Length; try { writer = request.GetRequestStream(); //获取用于写入请求数据的Stream对象 } catch (Exception ex) { return ""; } writer.Write(bytes, 0, bytes.Length); //把参数数据写入请求数据流 writer.Close(); try { response = (HttpWebResponse)request.GetResponse(); //获得响应 } catch (WebException ex) { return ""; } #region 这种方式读取到的是一个返回的结果字符串 Stream stream = response.GetResponseStream(); //获取响应流 XmlTextReader Reader = new XmlTextReader(stream); Reader.MoveToContent(); result = Reader.ReadInnerXml(); #endregion #region 这种方式读取到的是一个Xml格式的字符串 //StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); //result = reader.ReadToEnd(); #endregion response.Dispose(); response.Close(); //reader.Close(); //reader.Dispose(); Reader.Dispose(); Reader.Close(); stream.Dispose(); stream.Close(); return result; } }
第一种读取方式的返回结果:
第二种读取方式的返回结果:
PS:如果遇到调用时报错,可以尝试在服务端(即WebService)的 web.config 配置中添加如下配置节点。
<system.web> <webServices> <protocols> <add name="HttpPost" /> </protocols> </webServices> </system.web>
参考:
http://www.cnblogs.com/caiwenz/p/3910566.html
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SQL Server CLR 使用 C# 自定义函数
原文: SQL Server CLR 使用 C# 自定义函数 一、简介 Microsoft SQL Server 2005之后,实现了对 Microsoft .NET Framework 的公共语言运行时(CLR)的集成。CLR 集成使得现在可以使用 .NET Framework 语言编写代码,从而能够在 SQL Server 上运行,现在就可以通过 C# 来编写 SQL Server 自定义函数、存储过程、触发器等。我最初的目的是因为在 SQL Server 数据库中遇到数字的十进制与十六进制的互相转换问题,也看过一些方法吧,但是最后我却选择了用 CLR 来做,毕竟在 C# 中两三行代码就能搞定的问题。。。 二、配置 SQL Server CLR 开启 CLR: --开启所有服务器配置 sp_configure 'show advanced options', 1; RECONFIGURE WITH override GO --开启 CLR sp_configure 'clr enabled', 1; RECONFIGURE WITH override GO 关闭 CLR: --关...
- 下一篇
javascript数组特性
原文: javascript数组特性 数组是一段线性分配的内存, 它通过整数计算偏移并访问其中的元素. 数组是一种性能出色的数据结构. 1.数组字面量 数组字面量提供了一种非常方便地创建新数组的表示法.多个用逗号分隔的值的表达式. 数组字面量允许出现在任何表达式可以出现的地方. 数组的第一个值将获得属性名'0', 第二个值将获得属性名'1', 以此类推: 1 var empty = []; 2 var numbers = [ 3 'zero', 'one', 'two', 'three', 'four', 4 'five', 'six', 'seven', 'eight', 'nine' 5 ]; 6 7 console.log(empty[1]); // undefined 8 console.log(numbers[1]);// 'one' 9 10 console.log(empty.length);// 0 11 console.log(numbers.length);// 10 对象字面量: 1 var numbers_object = { 2 '0': 'zero', 3 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装