zoukankan      html  css  js  c++  java
  • C#中使用HttpPost调用WebService

    之前的文章中,使用过直接添加引用的方式调用WebService,还使用过HTTPClient调用WebService,这里还是使用Http请求去调用WebService。

    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;
            }
        }

    如果遇到调用时报错,可以尝试在WebService的web.config配置文件中添加如下节点

    <system.web>
        <webServices>
          <protocols>
            <add name="HttpPost" />
          </protocols>
        </webServices>
      </system.web>

    参考:https://www.cnblogs.com/Brambling/p/7266482.html 

  • 相关阅读:
    iOS
    iOS
    iOS The problems that i encountered
    HTTP STATUS CODE
    MySQL死锁导致无法查询的问题
    JAVA 响应时,按照指定的日期格式返回
    easy额xcel 生成Excel表并返回浏览器弹出下载的简单实现
    Byte数组和字符串相互转换的问题
    Springboot 使用过滤器进行加密解密(二)
    Springboot 部署到linux(二)
  • 原文地址:https://www.cnblogs.com/dotnet261010/p/12660797.html
Copyright © 2011-2022 走看看