【问题标题】:Is it possible that I can convert simple string to SOAP Message and send it?我可以将简单字符串转换为 SOAP 消息并发送吗?
【发布时间】:2014-07-31 05:18:39
【问题描述】:

目前我想知道在c#中是否可以读取字符串并将其转换为Soapmessage并将其发送到服务器进行处理并再次将响应转换为字符串?

【问题讨论】:

标签: c# .net web-services soap service


【解决方案1】:

您的代码应该类似于:

var document = Query(user, pass, date, regc);
var webRequest = Request(Url, Action, document);
var soapResult = Response(webRequest);
happiness = soapResult.Deserialize(out result);

查询:

internal static string Query(string user, string pass, string date, string regc)
{
    var doc = string.Format(@"<?xml version='1.0' encoding='UTF-8'?>
        <s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>
            <s:Body xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
                xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
            <PersonnelInfo xmlns='http://propartner.ee/'>
                <PersonnelInfoRequest xmlns=''>
                <username>{0}</username>
                <password>{1}</password>
                <reg_code>{2}</reg_code>
                <date>{3}</date>
                <country>est</country>
                <language>est</language>
                </PersonnelInfoRequest>
            </PersonnelInfo>
            </s:Body>
        </s:Envelope>", user, pass, regc, date);
    return doc;
}

请求:

    internal static HttpWebRequest Request(string url, string action, string doc)
    {
        var soapEnvelop = new XmlDocument();
        soapEnvelop.LoadXml(doc);
        var webRequest = (HttpWebRequest)WebRequest.Create(url);
        webRequest.Headers.Add("SOAPAction", action);
        webRequest.ContentType = "text/xml;charset=\"utf-8\"";
        webRequest.Accept = "text/xml";
        webRequest.Method = "POST";
        webRequest.Host = "wsrvc1.propartner.ee";
        using (var stream = webRequest.GetRequestStream())
        {
            soapEnvelop.Save(stream);
        }
        return webRequest;
    }

回复:

    internal static string Response(HttpWebRequest webRequest)
    {
        var asyncResult = webRequest.BeginGetResponse(null, null);
        asyncResult.AsyncWaitHandle.WaitOne();
        using (var webResponse = webRequest.EndGetResponse(asyncResult))
        {
            var responsesteam = webResponse.GetResponseStream();
            if (responsesteam == null) return default(string);
            using (var rd = new StreamReader(responsesteam))
            {
                var soapResult = rd.ReadToEnd();
                return soapResult;
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-05
    • 2015-06-23
    • 2011-02-10
    • 1970-01-01
    • 2022-01-05
    • 2016-03-12
    • 1970-01-01
    相关资源
    最近更新 更多