当前位置: 首页 > news >正文

C# 调用Webservice接口接受数据测试

1.http://t.csdnimg.cn/96m2g

此链接提供测试代码;

2.http://t.csdnimg.cn/64iCC

此链接提供测试接口;

关于Webservice的基础部分不做赘述,下面贴上我的测试代码(属于动态调用Webservice):

1:http助手类

using System.Net;
using System.Text;
using System.Web;
using static System.Net.Mime.MediaTypeNames;namespace WebServiceGetWeather;public class HttpHelper
{private static HttpHelper m_Helper;/// <summary>/// 单例模式/// </summary>public static HttpHelper Helper{get { return m_Helper ?? (m_Helper = new HttpHelper()); }}/// <summary>/// 获取请求的数据/// </summary>/// <param name="strUrl">请求地址</param>/// <param name="requestMode">请求方式</param>/// <param name="parameters">参数</param>/// <param name="requestCoding">请求编码</param>/// <param name="responseCoding">响应编码</param>/// <param name="timeout">请求超时时间(毫秒)</param>/// <returns>请求成功响应信息,失败返回null</returns>public string GetResponseString(string strUrl, ERequestMode requestMode,  Dictionary<string,string> parameters, Encoding requestCoding, Encoding responseCoding, int timeout = 300){string url = VerifyUrl(strUrl);HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(url));HttpWebResponse webResponse = null;switch (requestMode){case ERequestMode.Get:webResponse = GetRequest(webRequest, timeout);break;case ERequestMode.Post:webResponse = PostRequest(webRequest, parameters, timeout, requestCoding);break;}if (webResponse != null && webResponse.StatusCode == HttpStatusCode.OK){using (Stream newStream = webResponse.GetResponseStream()){if (newStream != null)using (StreamReader reader = new StreamReader(newStream, responseCoding)){string result = reader.ReadToEnd();return result;}}}return null;}/// <summary>/// get 请求指定地址返回响应数据/// </summary>/// <param name="webRequest">请求</param>/// <param name="timeout">请求超时时间(毫秒)</param>/// <returns>返回:响应信息</returns>private HttpWebResponse GetRequest(HttpWebRequest webRequest, int timeout){try{webRequest.Accept = "text/html, application/xhtml+xml, application/json, text/javascript, */*; q=0.01";webRequest.Headers.Add("Accept-Language", "zh-cn,en-US,en;q=0.5");webRequest.Headers.Add("Cache-Control", "no-cache");webRequest.UserAgent = "DefaultUserAgent";//webRequest.ContentType = "application / json";webRequest.Timeout = timeout;webRequest.Method = "GET";// 接收返回信息HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();return webResponse;}catch (Exception ex){return null;}}/// <summary>/// post 请求指定地址返回响应数据/// </summary>/// <param name="webRequest">请求</param>/// <param name="parameters">传入参数</param>/// <param name="timeout">请求超时时间(毫秒)</param>/// <param name="requestCoding">请求编码</param>/// <returns>返回:响应信息</returns>private HttpWebResponse PostRequest(HttpWebRequest webRequest, Dictionary<string, string> parameters, int timeout, Encoding requestCoding){try{// 拼接参数string postStr = string.Empty;if (parameters != null){parameters.All(o =>{if (string.IsNullOrEmpty(postStr))postStr = string.Format("{0}={1}", HttpUtility.UrlEncode(o.Key), HttpUtility.UrlEncode(o.Value));elsepostStr += string.Format("&{0}={1}", HttpUtility.UrlEncode(o.Key), HttpUtility.UrlEncode(o.Value));return true;});}byte[] byteArray = requestCoding.GetBytes(postStr);webRequest.Accept = "text/html, application/xhtml+xml, application/json, text/javascript, */*; q=0.01";webRequest.Headers.Add("Accept-Language", "zh-cn,en-US,en;q=0.5");webRequest.Headers.Add("Cache-Control", "no-cache");webRequest.UserAgent = "DefaultUserAgent";//webRequest.Timeout = timeout;webRequest.ContentType = "application/x-www-form-urlencoded";webRequest.ContentLength = byteArray.Length;webRequest.Method = "POST";// 将参数写入流using (Stream newStream = webRequest.GetRequestStream()){newStream.Write(byteArray, 0, byteArray.Length);newStream.Close();}// 接收返回信息HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();return webResponse;}catch (Exception ex){return null;}}/// <summary>/// 验证URL/// </summary>/// <param name="url">待验证 URL</param>/// <returns></returns>private string VerifyUrl(string url){if (string.IsNullOrEmpty(url))throw new Exception("URL 地址不可以为空!");if (url.StartsWith("http://", StringComparison.CurrentCultureIgnoreCase))return url;return string.Format("http://{0}", url);}
}
public enum ERequestMode
{Get,Post
}

2:调用方法

internal class Program{static void Main(string[] args){Console.WriteLine("Hello, World!");TestInvoke();}/// <summary>/// 测试调用/// </summary>static void TestInvoke(){//组织参数//<参数名,参数值>Dictionary<string, string> parameters = new Dictionary<string, string>();parameters.Add("byProvinceName", "北京");//getSupportCity是方法名称直接放在后面string url = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity ";string _result = HttpHelper.Helper.GetResponseString(url, ERequestMode.Post, parameters, Encoding.Default, Encoding.UTF8);}

注意事项:

1:接口方法里面的案例参数要与代码中指定的一致:

 2:方法名直接放在url结尾:

string url = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getSupportCity ";

△   其中getSupportCity 就是方法名。

Dictionary<string, string> parameters = new Dictionary<string, string>();

△   其中parameters 的key是方法参数名,value是参数值。

先装一下原创,原作有想法评论或者私聊,即可更改。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • hcip学习 DHCP中继
  • 防洪评价报告编制方法与水流数学模型建模技术
  • mysql+php+html实现学生管理系统
  • LangChain的embeddings结合向量数据库Weaviate接入ChatGPT-4、智普和通义千问
  • 命令行使用ADB,不用root,完美卸载小米预装软件
  • nginx代理服务地址时添加帐号密码认证
  • 解决mysql事件调度器重启服务后自动失效的问题
  • 西门子s7第三方(S7netplus)读写操作
  • 从0开始搭建vue + flask 旅游景点数据分析系统(一):创建前端项目
  • 2024电赛H题参考方案(+视频演示+核心控制代码)——自动行使小车
  • 函数式编程范式
  • go-kratos 学习笔记(6) 数据库gorm使用
  • 后端返回列表中包含图片id,如何将列表中的图片id转化成url
  • vue3 命令运行窗口暴露网络地址,以及修改端口号
  • AI技术革命对未来就业的影响
  • 时间复杂度分析经典问题——最大子序列和
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • ➹使用webpack配置多页面应用(MPA)
  • Android开源项目规范总结
  • bearychat的java client
  • es6(二):字符串的扩展
  • Javascript Math对象和Date对象常用方法详解
  • JS题目及答案整理
  • OSS Web直传 (文件图片)
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Vue全家桶实现一个Web App
  • Webpack 4x 之路 ( 四 )
  • yii2权限控制rbac之rule详细讲解
  • 从PHP迁移至Golang - 基础篇
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 七牛云假注销小指南
  • 深入 Nginx 之配置篇
  • 我建了一个叫Hello World的项目
  • 用简单代码看卷积组块发展
  • 优化 Vue 项目编译文件大小
  • 最简单的无缝轮播
  • No resource identifier found for attribute,RxJava之zip操作符
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • #162 (Div. 2)
  • #pragma data_seg 共享数据区(转)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (2)MFC+openGL单文档框架glFrame
  • (C语言)字符分类函数
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (java)关于Thread的挂起和恢复
  • (笔试题)合法字符串
  • (二)丶RabbitMQ的六大核心
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (四)鸿鹄云架构一服务注册中心
  • (算法)前K大的和
  • (转)shell中括号的特殊用法 linux if多条件判断
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu