• C# 调用Java的webService


    public class SoapWebService
    {
    /// <summary>
    /// webService 地址
    /// </summary>
    private string url = "";
    public SoapWebService()
    {
    this.url =ReadPrivateProfile("WEBSERURL", "Url", AppDomain.CurrentDomain.BaseDirectory+@"BinMobilePayment.ini");
    }

    public string QueryPostWebService(string inputData)
    {
    string methodName = "hosService";
    string InText =
    "<?xml version="1.0" encoding="utf-8"?>"
    +" <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ser="http://services.freshpower.com.cn"> "
    + " <soapenv:Header/> "
    + " <soapenv:Body> "
    + " <ser:hosService soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> "
    + " <data xsi:type="soapenc:string" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">" + inputData + "</data>"
    + " </ser:hosService>"
    + " </soapenv:Body>"
    + " </soapenv:Envelope> ";


    string url = this.url;
    return GetSOAPReSource(url, InText, methodName);
    }

    private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
    { // 总是接受
    return true;
    }
    private string GetSOAPReSource(string url, string datastr, string methodname)
    {
    try
    {
    //request
    Uri uri = new Uri(url);
    ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);//验证服务器证书回调自动验证
    HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(uri);
    webRequest.Method = "POST";
    webRequest.Accept = @"gzip,deflate";
    webRequest.ContentType = @"application/soap+xml;charset=UTF-8";
    webRequest.UserAgent = @"Apache-HttpClient/4.1.1 (java 1.5)";
    webRequest.Credentials = CredentialCache.DefaultCredentials;
    webRequest.Timeout = 10000;
    webRequest.Headers.Add("soapaction", methodname);//axis框架生成的方法,必须添加一个soapaction的头关键字

    using (Stream requestStream = webRequest.GetRequestStream())
    {
    byte[] paramBytes = Encoding.UTF8.GetBytes(datastr);
    requestStream.Write(paramBytes, 0, paramBytes.Length);
    }
    //response
    System.Net.WebResponse webResponse = webRequest.GetResponse();
    XmlDocument doc = ReadXmlResponse(webResponse);
    XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable);
    mgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
    XmlNode node = doc.SelectSingleNode("//soap:Body/*/*", mgr);


    return node.InnerText;
    }
    catch (Exception ex)
    {
    Log.Error("", ex.Message+"获取WebService异常");
    throw ex;
    }
    }

    private static XmlDocument ReadXmlResponse(WebResponse response)
    {
    StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
    String retXml = sr.ReadToEnd();
    sr.Close();
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(retXml);
    return doc;
    }
    }

  • 相关阅读:
    <img>的onClick属性的问题。
    Struts2的声明式异常处理
    beginner项目
    Visual Studio 2010 SP1将支持HTML5和CSS3 狼人:
    技巧:你未必知道的IE8九大功能 狼人:
    Mozilla公布Firefox 2011年开发计划 狼人:
    如何真正提高ASP.NET网站的性能 狼人:
    互联网之父Vint Cerf谈重组互联网 狼人:
    一位资深IT自由职业者的2010年回顾 狼人:
    PHP框架 Raxan 1.0 最终版发布 狼人:
  • 原文地址:https://www.cnblogs.com/tanhu/p/9647228.html
Copyright © 2020-2023  润新知