C#、.Net通过HttpWebRequest请求WebService接口
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接口的更多相关文章
- 通过HttpWebRequest请求https接口
一.为什么进行代理接口的开发: 有些项目需要访问被墙了哒网站,比如前不久公司开发项目需要使用google地图的接口,而google在中国被墙了,所有打算做一个代理接口服务,将代理放到国外服务器上,通过 ...
- Kettle通过Http post请求webservice接口以及结果解析处理
kettle中有两种方式请求webservice服务,一个是Web服务查询,但是这个有缺陷,无法处理复杂的需求,遇到这种情况就需要用Http post来处理了. 网上也有很多关于Http post请求 ...
- 使用HttpWebRequest请求API接口以及其他网站资源
很多时候,我们项目需要其他网站的资源,而这个被请求的网站可能属于你们自己开发管理的网站.也可能是公网上其他网站对外开发的API接口,比如说腾讯的微信公众平台的API接口.各大短信服务商的短信API接口 ...
- 请求webservice接口的某方法数据
NSURL *url = [NSURL URLWithString:@"http://xxx.xxx.com/xxx/xxxxWS?wsdl"]; NSString *soapMs ...
- ajax跨域请求调用webservice接口
1.WebService 接口编写 步骤:新建web项目=>添加web service=>编写方法接口=>然后发布(本地测试可以直接把这个web service运行起来). 关键如何 ...
- 通过jmeter发送webservice接口请求
1.webservice接口地址:http://ip:port/...?wsdl 2.接口数据类型:<cuxGmiChukuRmaTrxV><salesrepId xmlns:xsi ...
- Node.js 使用 soap 模块请求 WebService 服务接口
项目开发中需要请求webservice服务,前端主要使用node.js 作为运行环境,因此可以使用soap进行请求. 使用SOAP请求webservice服务的流程如下: 1.进入项目目录,安装 so ...
- python通过http请求发送soap报文进行webservice接口调用
最近学习Python调用webservice 接口,开始的时候主要采用suds 的方式生产client调用,后来发现公司的短信接口采用的是soap报文来调用的,然后开始了谷歌,最后采用httplib ...
- 从xfire谈WebService接口化编程
前段时间有博友在看我的博文<WebService入门案例>后,发邮件问我关于WebService 接口在java中的开发,以及在实际生产环境中的应用.想想自己入职也有一段时间了,似乎也该总 ...
- ab post 测试 http 和 webservice 接口方法及用例
1.ab测试简单http请求 ab -n30000 -c1000 "http://10.1.1.21:8080/" 2.ab 测试 http 接口 (POST) ab -n400 ...
随机推荐
- Chester1011的疑问
题目背景 一天,\(\texttt{Chester}\)和\(\texttt{hsh}\)在写数据结构题. 他们开始刷起了羊毛地毯.在羊毛地毯的落地点,有一个漏斗.漏斗下面会经过漏斗矿车,每次只能吸走 ...
- 我做了个 AI 高考分数预测器,这次终于能上清华了!
马上高考了,可惜我今年有事情参加不了了,就帮帮广大考生朋友们,送大家一个我自己做的高考神器吧! 铛铛铛铛,就是这个 高考分数预测器! 体验地址:https://gaokao.codefather.cn ...
- 第1周作业题-numpy构建基本函数
numpy构建基本函数 1. Jupyter Notebook ① 编写代码后,通过按 "SHIFT" + "ENTER" 或单击笔记本上部栏中的 " ...
- 网页实现ping效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C++求最长的一条食物链的长度。DFS深度优先算法
题目描述 如图所示为某生态系统的食物网示意图,据图回答第一小题. 1. 数一数,在这个食物网中最长的食物链包含的物种数是 ( ) ...... 现在给你 n 个物种和 m 条能量流动关系,求其中的食物 ...
- 密度泛函理论(DFT)简介
密度泛函理论(DFT)简介 密度泛函理论(Density Functional Theory,DFT)是一种现代量子力学计算方法,广泛应用于原子.分子和固体材料的电子结构研究. DFT 的基本思想: ...
- MySQL 14 count(*)这么慢,我该怎么办?
count(*)的实现方式 在不同的MySQL引擎中,count(*)有不同的实现方式: MyISAM引擎把一个表的总行数存在磁盘上,执行count(*)时能直接返回总行数,效率很高: InnoDB引 ...
- java 套接字
简介 RT code package com.kuang; import java.io.ByteArrayOutputStream; import java.io.IOException; impo ...
- 洛谷 U388010 题解
洛谷 U388010 题解 link:https://www.luogu.com.cn/problem/U388010 Sol 首先,我们看到这一条件: 对于每一个 \(1 \le i \le n\) ...
- ETL中Python组件的运用
Python是一种高级.通用.解释型编程语言,以简洁.易读.易学的语法而闻名,被广泛应用于Web开发.数据科学.人工智能.自动化脚本等领域. python的特点包含 易读易学:Python的语法设计简 ...