using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace WebAPIBase.Utils
{
    public static class SOAPHelper
    {
        /// <summary>
        /// 发送SOAP请求，并返回响应xml
        /// </summary>
        /// <param name="url">请求地址http://www.wjg121.cn/Service/IPAddress.asmx?op=GetIPCountryAndLocal </param>
        /// <param name="datastr">SOAP请求信息 </param>
        /// <param name="action">请求类型 POST GET</param>
        /// <returns>返回响应信息</returns>
        public static string GetSOAPReSource(string url, string datastr, string action)
        {

            //发起请求
            Uri uri = new Uri(url);
            WebRequest webRequest = WebRequest.Create(uri);
            webRequest.ContentType = "text/xml; charset=utf-8";
            webRequest.Method = action;
            using (Stream requestStream = webRequest.GetRequestStream())
            {
                byte[] paramBytes = Encoding.UTF8.GetBytes(datastr.ToString());
                requestStream.Write(paramBytes, 0, paramBytes.Length);
            }

            //响应
            WebResponse webResponse = webRequest.GetResponse();
            using (StreamReader myStreamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))
            {
                string result = "";
                return result = myStreamReader.ReadToEnd();
            }

            //var url = @"http://222.223.237.11:8189/WorkFlowWebService60NodeJS/Query.asmx";
            ////构造soap请求信息
            //StringBuilder soap = new StringBuilder();
            //soap.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            //soap.Append("<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">");
            //soap.Append("<soap:Body>");
            //soap.Append("<Login xmlns=\"http://tempuri.org/\">");
            //soap.Append(string.Format("<userId>{0}</userId>", request.UserName));
            //soap.Append(string.Format("<password>{0}</password>", request.Password));
            //soap.Append(string.Format("<dNo>{0}</dNo>", ""));
            //soap.Append(string.Format("<dToken>{0}</dToken>", ""));
            //soap.Append("</Login>");
            //soap.Append("</soap:Body>");
            //soap.Append("</soap:Envelope>");
            //var result = SOAPHelper.GetSOAPReSource(url, soap.ToString(), "POST");
        }
    }
}
