C#调用webservice的三种方法总结_weixin_34221073的博客-程序员信息网

技术标签: python  postman  

【1】直接添加服务引用,然后调用相关方法。

【2】使用 HttpPost 请求调用 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("x") + "=" + HttpUtility.UrlEncode(num1) + "&" + HttpUtility.UrlEncode("y") + "=" + 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;
        }
    }

用PostMan工具测试:

注意:webservice中的方法参数变量的名字和你提供的变量名字一样;param = HttpUtility.UrlEncode("x") + "=" + HttpUtility.UrlEncode(num1) + "&" + HttpUtility.UrlEncode("y") + "=" + HttpUtility.UrlEncode(num2);

【3】动态调用WebService    ????

 

转载于:https://my.oschina.net/u/3522874/blog/1859953

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34221073/article/details/92390334

智能推荐

流式计算--实战(日志监控系统)_时空恋旅人的博客-程序员信息网

1.日志监控系统         数据的流向:flume+kafka+storm+mysql    数据流程如下: 应用程序使用log4j产生日志 部署flume客户端监控应用程序产生的日志信息,并发送到kafka集群中 storm spout拉去kafka的数据进行消费,逐条过滤每条日志的进行规则判断,对符合规则的日志进行邮件告警。 最后将告警的信息保存到mysql数...

Windows本地搜索_输微的博客-程序员信息网

搜索文件名可以使用 Everything ,效率比Windows的文件搜索要快一万倍搜索多个二进制文件的内容比如要搜索多个Excel文件、多个Word文件可以先将这些文件置于一个文件夹内,然后使用Windows自身的搜索就可以了...

程序员如何不断提高自己?_wayne_ren的博客-程序员信息网

[color=red][b]没有超人,关注该关注的即可![/b][/color](一)如果遇到问题,先Google一下 [url=https://www.google.com/]https://www.google.com/[/url],或者Bing [url=https://www.bing.com/]https://www.bing.com/[/url]解决问题的顺序:查看日志...

mongoDB数据库设置账号密码验证_只不过碎银几两的博客-程序员信息网_mongo开启密码验证

一般默认安装mongoDB到电脑的时候,默认数据库是没有设置管理员账号密码的。所以为了安全问题,必须需要设置一下以系统管理员的方式运行powershell连接数据库 mongomongo查看数据库 show dbsshow dbs切换到admin数据库 use admin创建超级管理员账户 db.createUser()use admindb.createUser({ user:"设置管理员账号", pwd:"设置管理员密码", roles:["root"] })

windows上安装jdk1.8_qq_31622471的博客-程序员信息网

来自《JAVA学习路线图》一、下载地址1、oracle下载地址2、百度网盘下载提取码:bs1u二、安装步骤1、安装目录建议安装在C盘默认目录默认选项安装,也可以按照自己的需求选择安装2、安装完成三、设置环境变量(win10为例)1、JAVA_HOME(1)在电脑桌面 右键点击 “此电脑”的“属性”选项(2)选择“高级系统设置”选项,点击下面的“环境变量”选项...

这特么是啥系列之----webx学习笔记_start_lie的博客-程序员信息网

<listener>  <listener-class>com.test.citrus.webx.context.WebxContextLoaderListener</listener-class></listener>该监听器实现了spring的ContextLoaderListener来负责在启动的时候加载Webx环境的public cla...

随便推点

Pycharm print打印输出显示不全 有省略号问题 tensor numpy pandas_RPG_Zero的博客-程序员信息网

如果是Pandas,则设置如下代码:import pandas as pdimport numpy as nppd.set_option('display.max_columns', None) #显示完整的列pd.set_option('display.max_rows', None) #显示完整的行如果是numpy:import numpy as npnp.set_printoptions(threshold=np.inf)如果是tensor,则先转换为numpy中的数据类型

统计文件字数,并按出现次数打印结果_侠之大者为国为民的博客-程序员信息网

#!/usr/bin/env python3# coding=utf-8import stringdic={}with open("test.txt","r") as f: txt = f.read()number= [str(n) for n in range(10)]alpha = list(string.ascii_letters)dot = list("\\\t

oracle数据库是db还是dbnms,Oracle数据库日常管理手册_项目现场篇(13页)-原创力文档..._特殊后勤小干事的博客-程序员信息网

Oracle数据库日常管理 _ 项目现场篇修改: 2010/2/8查看所有的实例及其后台进程是否正常确认所有的instance工作正常,登陆到所有的数据库或instance上,检测oracle后台进程GDDB4-/export/home/oracle> env | grep SIDORACLE_SID=UWNMS3GDDB4-/export/home/oracle> ps -ef|gr...

Android使用Handler实现子线程与子线程、子线程与主线程之间通信_梵韵的博客-程序员信息网_android handler 子线程

转载:https://blog.csdn.net/shaoenxiao/article/details/54561753今天这篇文章只讲一下怎么使用Handler实现子线程与子线程之间、子线程与主线程之间如何进行通信,关于具体的内部实现因为我也没研究过,所以这篇文章讲不了。一、子线程向主线程传值:这个实现比较简单,因为主线程自带Looper机制,所有我们不用创建Looper了,看一下代码吧:首选在...

React-native 中因为计时器导致的异常解决办法_镰刀出海的博客-程序员信息网

很多React Native应用发生致命错误(闪退)是与计时器有关。在某个组件被卸载(unmount)之后,计时器却仍然被激活。为了解决这个问题,需要在组件中引入TimerMixin,就可以把你原本的setTimeout(fn, 500)改为this.setTimeout(fn, 500)(只需要在前面加上this.),然后当你的组件卸载时,所有的计时器事件也会被正确的清除。这个库并没

小程序里如何使页面自动滚动到底部_wgcc的博客-程序员信息网

在更新数据后,以及初次进入页面,希望页面停留在最底部// 获取容器高度,使页面滚动到容器底部 pageScrollToBottom: function() { wx.createSelectorQuery().select('#j_page').boundingClientRect(function(rect){ // 使页面滚动到底部 wx.pageScr...

推荐文章

热门文章

相关标签