C#调用WebService有三种方式,静态调用、动态调用、Http访问,今天我们要实现的HttpWebRequest来调用WebService。

首先,需要在HttpWebRequest上面加一个SOAP格式内容,参数为:xml,修改对应的请求方法及命名中间地址、请求参数名,这三个非常重要,对应你要访问的WebService地址中都有的,具体看图中圈中的地方。



如果部署在内网不方便测试的情况,可以访问http://www.webxml.com.cn/zh_cn/web_services.aspx来测试。

具体实现代码如下:

 /// <summary>
/// 测试按钮中调用WebService接口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
//string result = HttpPostWebService(textBox1.Text, textBox2.Text);
string result = HttpPostWebService("http://localhost:5000/StudentService.asmx", "<strInput>192.168.1.100</strInput>");
MessageBox.Show(result);
} /// <summary>
/// 调用WebService接口
/// </summary>
/// <param name="url">请求接口地址</param>
/// <param name="strInput"></param>
/// <returns></returns>
public string HttpPostWebService(string url, string strInput)
{
string result = string.Empty;//返回值
//string param = string.Empty;//请求参数
byte[] bytes = null;
HttpWebRequest request = null;
Stream writer = null;
string responseString = string.Empty;//返回内容
// SOAP格式内容,参数为:xml
StringBuilder param = new StringBuilder();
param.Append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\r\n");
param.Append("<soap:Body>\r\n");
param.Append("<Get xmlns=\"http://tempuri.org/\">\r\n");//请求方法名称
param.Append("<strInput>测试</strInput>");//请求参数
param.Append("</Get>\r\n</soap:Body>\r\n</soap:Envelope>");
try
{
//param = $"strInput={strInput}";//接收参数名称
bytes = Encoding.UTF8.GetBytes(param.ToString());
request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "text/xml;charset=UTF-8";
request.ContentLength = bytes.Length;
request.Timeout = 10000; // 设置请求超时时间为10秒
using (writer = request.GetRequestStream())
{
writer.Write(bytes, 0, bytes.Length);
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
result = sr.ReadToEnd();
}
}
}
catch (Exception ex)
{
throw ex;
}
return result;
}

`
demo源码:https://github.com/cplmlm/LearningProjectsForm

C#、.Net通过HttpWebRequest请求WebService接口的更多相关文章

  1. 通过HttpWebRequest请求https接口

    一.为什么进行代理接口的开发: 有些项目需要访问被墙了哒网站,比如前不久公司开发项目需要使用google地图的接口,而google在中国被墙了,所有打算做一个代理接口服务,将代理放到国外服务器上,通过 ...

  2. Kettle通过Http post请求webservice接口以及结果解析处理

    kettle中有两种方式请求webservice服务,一个是Web服务查询,但是这个有缺陷,无法处理复杂的需求,遇到这种情况就需要用Http post来处理了. 网上也有很多关于Http post请求 ...

  3. 使用HttpWebRequest请求API接口以及其他网站资源

    很多时候,我们项目需要其他网站的资源,而这个被请求的网站可能属于你们自己开发管理的网站.也可能是公网上其他网站对外开发的API接口,比如说腾讯的微信公众平台的API接口.各大短信服务商的短信API接口 ...

  4. 请求webservice接口的某方法数据

    NSURL *url = [NSURL URLWithString:@"http://xxx.xxx.com/xxx/xxxxWS?wsdl"]; NSString *soapMs ...

  5. ajax跨域请求调用webservice接口

    1.WebService 接口编写 步骤:新建web项目=>添加web service=>编写方法接口=>然后发布(本地测试可以直接把这个web service运行起来). 关键如何 ...

  6. 通过jmeter发送webservice接口请求

    1.webservice接口地址:http://ip:port/...?wsdl 2.接口数据类型:<cuxGmiChukuRmaTrxV><salesrepId xmlns:xsi ...

  7. Node.js 使用 soap 模块请求 WebService 服务接口

    项目开发中需要请求webservice服务,前端主要使用node.js 作为运行环境,因此可以使用soap进行请求. 使用SOAP请求webservice服务的流程如下: 1.进入项目目录,安装 so ...

  8. python通过http请求发送soap报文进行webservice接口调用

    最近学习Python调用webservice 接口,开始的时候主要采用suds 的方式生产client调用,后来发现公司的短信接口采用的是soap报文来调用的,然后开始了谷歌,最后采用httplib ...

  9. 从xfire谈WebService接口化编程

    前段时间有博友在看我的博文<WebService入门案例>后,发邮件问我关于WebService 接口在java中的开发,以及在实际生产环境中的应用.想想自己入职也有一段时间了,似乎也该总 ...

  10. ab post 测试 http 和 webservice 接口方法及用例

    1.ab测试简单http请求 ab -n30000 -c1000 "http://10.1.1.21:8080/" 2.ab 测试 http 接口 (POST) ab -n400 ...

随机推荐

  1. Vue获取钉钉免登陆授权码(vue中的回调函数实践)

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 1.背景 2.技术栈 3.需求 4.实现步骤 4.1 配合webpack安装对应的npm包 4.2 抽取获得code的js方法 4.3 在需要 ...

  2. 把数据库表的信息添加到list集合里面

    把数据库表里面的信息添加到集合里面并且打印出来: 数据库表的内容:  java代码逻辑处理: 1 public static void main(String[] args) { 2 3 Connec ...

  3. 分布式事务TCC

    大家好,今天想和大家一起聊聊分布式事务. 今天主要说主要内容如下: * 分布式事务TCC 我们知道布式式事物TCC代表Try.Confirm.Cancel,就是尝试.确认.取消.这个是互联网上比较常见 ...

  4. 数栈技术分享:详解FlinkX中的断点续传和实时采集

    数栈是云原生-站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变 ...

  5. ko在数栈中的应用

    ​ 引言 一项技术能得以广泛运用,其中的一个关键点在于工程化.前端从最开始的简单写写网页和样式,发展为需要处理复杂的逻辑,伴随而来的是问题是相关文件越来越多,简单在网页中引用已经解决不了问题,需要相关 ...

  6. GIM 1.4 发布了 (附使用 mkdocs 快速制作静态站点流程)

    GIM 1.4.0 今天发布了! GIM 是 MAC 上一个根据文件或代码变更自动总结文件变更总汇总生成提交消息的工具:GIT仓库. 官方文档:https://git-intelligence-mes ...

  7. JDK 7 和 JDK 8 的区别

    简介 容易记的 jdk8支持接口可以添加默认方法, default; jdk8支持lambda表达式 jdk7中hashmap解决冲突采用链表, 一旦hash碰撞过多, 可能会使得一个链表上存在多个节 ...

  8. ETL数据集成丨MySQL到MySQL的数据迁移实践

    前言 MySQL数据迁移至另一MySQL数据库的过程,不仅是数据复制或移动的操作那么简单,它还涉及到一系列策略性考量和技术优化,旨在实现数据的高效.安全传输,以及确保目标系统的高性能运行.其深远意义在 ...

  9. SPI总线协议

    SPI总线协议 0. 概述 数据线: SCL :同步时钟线,用于控制时序,可通过CPOL设置极性 MOSI :主机发送-从机接收 数据线 MISO :主机接收-从机发送 数据线 CS/NSS:片选信号 ...

  10. Apipost 的AI功能真的还不错啊!建议后端开发和测试人员了解

    在 API 开发与测试过程中,最让后端开发和测试头疼的不是写复杂算法,而是那些 "不得不做却又毫无成就感" 的重复性工作:参数命名.脚本编写.断言构建.文档完善--这些琐碎而关键的 ...