zoukankan      html  css  js  c++  java
  • C#使用Http的Post方式请求webservice

    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代理类更爽啊啊~

  • 相关阅读:
    个人冲刺6
    个人冲刺5
    个人冲刺4
    学习进度10
    个人冲刺3
    个人冲刺2
    单词统计
    返回一个整数数组中最大子数组的和
    JavaWeb_JavaEE_命名规则 转载http://www.cnblogs.com/xwdreamer/
    软件工程作业(四则运算web界面实现)-3
  • 原文地址:https://www.cnblogs.com/hunanzp/p/7498853.html
Copyright © 2011-2022 走看看