码迷,mamicode.com
首页 > Windows程序 > 详细

C#使用Http的Post方式请求webservice

时间:2017-09-09 18:57:14      阅读:480      评论:0      收藏:0      [点我收藏+]

标签:XML   返回值   display   服务   utf8   div   搜索   img   close   

webservice是以前比较流行的跨系统、跨语言、跨平台的数据交互技术。最近工作中调用Java作为服务端开放的webser,
我是通过VS205生成webservice工具类的方式进行接口调用的。用这种方式的理由是对自身的工程项目影响较小,系统
生成一个工具了,只需要将此工具类放置对应的目录下并包含在项目中即可。
这种方式看似很好,但是我最近的这个项目出现一个奇怪的问题,就是用webservice工具类调用接口返回值居然是null,
用SoapUI测试却是正常返回了数据,于是我使用Postman测试了下,发现Postman也返回了数据,不过返回的xml数据需要
html转义下。 网上搜索了下,大概意思是指java服务端在将java对象进行序列化过程中可能有指定的数据类型与C#序列化存在差异。
反正意思大概是这个意思,我在想竟然Postman可以交互,那我直接用http请求得了。

用http请求,直接将soapUI中的入参在代码中拼接好即可,如下:

 

技术分享
 1  /// <summary>
 2         /// 生成Http Post入参
 3         /// </summary>
 4         /// <param name="post"></param>
 5         /// <returns></returns>
 6         private string CreateHttpRequest(string post)
 7         {
 8             StringBuilder sb = new StringBuilder();
 9             sb.Append(@"<soapenv:Envelope xmlns:soapenv=‘http://schemas.xmlsoap.org/soap/envelope/‘ xmlns:exc=访问地址‘>");
10             sb.Append("<soapenv:Header/>");
11             sb.Append("<soapenv:Body>");
12             sb.Append("<exc:HisWxEccute>");
13             sb.Append("<exc:xmlString>");
14             sb.Append(post);
15             sb.Append("</exc:xmlString>");
16             sb.Append("</exc:HisWxEccute>");
17             sb.Append("</soapenv:Body>");
18             sb.Append("</soapenv:Envelope>");
19             return sb.ToString();
20         }
View Code

使用方法:

1  string input = CreateHttpRequest(req);              
2  string result = WebRequestHelper.Current.HttpPost(Url, input, Encoding.UTF8, Encoding.UTF8);

感觉这种方式比生产webservice代理类更爽啊啊~

C#使用Http的Post方式请求webservice

标签:XML   返回值   display   服务   utf8   div   搜索   img   close   

原文地址:http://www.cnblogs.com/hunanzp/p/7498853.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!