C#使用Http的Post方式请求webservice
webservice是以前比较流行的跨系统、跨语言、跨平台的数据交互技术。最近工作中调用Java作为服务端开放的webser,
我是通过VS205生成webservice工具类的方式进行接口调用的。用这种方式的理由是对自身的工程项目影响较小,系统
生成一个工具了,只需要将此工具类放置对应的目录下并包含在项目中即可。
这种方式看似很好,但是我最近的这个项目出现一个奇怪的问题,就是用webservice工具类调用接口返回值居然是null,
用SoapUI测试却是正常返回了数据,于是我使用Postman测试了下,发现Postman也返回了数据,不过返回的xml数据需要
html转义下。 网上搜索了下,大概意思是指java服务端在将java对象进行序列化过程中可能有指定的数据类型与C#序列化存在差异。
反正意思大概是这个意思,我在想竟然Postman可以交互,那我直接用http请求得了。
用http请求,直接将soapUI中的入参在代码中拼接好即可,如下:
/// <summary>
/// 生成Http Post入参
/// </summary>
/// <param name="post"></param>
/// <returns></returns>
private string CreateHttpRequest(string post)
{
StringBuilder sb = new StringBuilder();
sb.Append(@"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:exc=访问地址'>");
sb.Append("<soapenv:Header/>");
sb.Append("<soapenv:Body>");
sb.Append("<exc:HisWxEccute>");
sb.Append("<exc:xmlString>");
sb.Append(post);
sb.Append("</exc:xmlString>");
sb.Append("</exc:HisWxEccute>");
sb.Append("</soapenv:Body>");
sb.Append("</soapenv:Envelope>");
return sb.ToString();
}
使用方法:
string input = CreateHttpRequest(req);
string result = WebRequestHelper.Current.HttpPost(Url, input, Encoding.UTF8, Encoding.UTF8);
感觉这种方式比生产webservice代理类更爽啊啊~
C#使用Http的Post方式请求webservice的更多相关文章
- webserive学习记录6-页面请求webservice
前面都是通过JAVA代码访问webservice服务,下面将介绍通过javascript,jquery访问webservice服务并介绍过过servlet解决跨域问题的方法. 服务端 编写服务代码,解 ...
- Kettle通过Http post请求webservice接口以及结果解析处理
kettle中有两种方式请求webservice服务,一个是Web服务查询,但是这个有缺陷,无法处理复杂的需求,遇到这种情况就需要用Http post来处理了. 网上也有很多关于Http post请求 ...
- JQuery请求WebService返回数据的几种处理方式
打开自己的博客仔细浏览了一番,发现已经好久没有写博客了,由于最近一直比较忙碌懈怠了好多.默默反省三分钟.......言归正传,现在就对最近在学习webservice的过程中遇到的几种类型的问题中我的理 ...
- WebService Get/Post/Soap 方式请求
import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.InputStream; im ...
- jquery+ajax跨域请求webservice
最近几天在学习webservice...在学习的时候便想到用ajax的方式去请求webservice.. 一直在测试..如果这个被请求的webservice和自己使用的是同一个端口号.则不用考虑那aj ...
- ajax 异步请求webservice(XML格式)
function callAjaxWebservice(){ alert("call ajax"); try { $.ajax({ type: "POST", ...
- FineReport中以jws方式调用WebService数据源方案
在使用WebService作为项目的数据源时,希望报表中也是直接调用这个WebService数据源,而不是定义数据连接调用对应的数据库表,这样要怎么实现呢? 在程序中访问WebService应用服务, ...
- 使用ajax和urlconnection方式调用webservice服务
<html> <head> <title>使用ajax方式调用webservice服务</title> <script> var xhr = ...
- 使用CXF实现基于Rest方式的WebService(转)
转自:https://www.cnblogs.com/zjm701/p/6845813.html原文更清晰 本文介绍使用CXF实现基于Rest方式的WebService(CXF的版本是3.0.0) 一 ...
随机推荐
- 使用Ant Build时提示错误: 编码GBK的不可映射字符
这个build.xml是由eclipse neon 2016.6生成的 我的情况是,所有文件都使用了UTF-8编码,build.xml第一行也好好写着UTF-8,但build时仍然有乱码,并且提示失败 ...
- ajax源代码
//**********第一步, 获得一个xhr对象************* var xmlHttpReq = null; //声明一个空对象用来装入XMLHttpRequest if (windo ...
- PHP 反射的简单使用
反射机制简介 之前已经介绍过Java反射机制的简单使用,所有的反射机制的思想作用等都是类似的,下面就一起来了解一下PHP反射机制. 个人理解:反射机制就是可以利用类名或者一个类的对象来获取关于这个类的 ...
- 不会git的程序员,会不会被鄙视?
昨天一朋友在微信上问了我一个问题,我觉得很有趣,于是将本次聊天的内容分享给大家. 我朋友说,如果一个程序员不会使用 git,会不会被别人觉得低一个档次? 事先声明啊,这与公司技术栈无关,不要说有些公司 ...
- mysql中Table is read only的解决方法
首先去到mysq的bin目录 cd /usr/local/mysql/bin 执行如下mysqladmin ./mysqladmin -p flush-tables 接着输入数据库存的root密码即可
- CSS面试细节整理(一)
最近面试时候发现自己最熟悉的css确实开发中好多细节没注意到,为了防止在栽跟头,打算从头到底捋一遍咯 语法部分: 1.css几种选择器的写法 (1)h1 em {color:red;} (后代选择器) ...
- 关于using namespace std
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~关于using namespace std ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...
- truffle unbox react 出坑指南
最近几天差点就被这鬼东西给逼疯了,truffle init .truffle unbox webpack 不管我怎么运行都是对的,唯独truffle unbox react 不管在哪个windows都 ...
- [Zephyr] 1、在linux上安装Zephyr-OS并跑DEMO
星期五, 14. 九月 2018 02:18上午 - BEAUTIFULZZZZ 0) 前言 Zephyr™项目是一个采用Apache 2.0协议许可,Linux基金会托管的协作项目.为所有资源受限设 ...
- 多媒体文件格式(三):M3U8 格式
一.M3U8 格式标准介绍 M3U8文件是指UTF-8编码格式的M3U文件.M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播 ...