调用webservice获取base64保存到指定路径

调用webservice获取base64保存到指定路径

/// <summary>
        /// 通过接口获取模板文件
        /// </summary>
        private bool GetWebServiceData()
        {
            string url = "http://oatest.chinafastprint.com:8090/sys/webservice/icsFileService";//如果是?wsdl结尾的  需要把?wsdl删除掉
            string contenttype = "text/xml;charset=utf-8";
            Hashtable header = new Hashtable();
            //header.Add("SOAPAction", "上面获取到的SOAPAction地址");
            string data = LoadXmls(textBoxX_FormNo.Text.Trim());//这里是传递参数,拼接正规的完整xml入参
            string filexml = Http(url, "post", contenttype, header, data);
            XmlDocument doc1 = new XmlDocument();
            doc1.LoadXml(filexml);   //将获取到的结果加载为xml对象
            string model = doc1.InnerText;//直接读取返回值  也就是cdata内部的内容
            if (model.Length <= 2)
            {
                MessageBoxEx.Show($"找不到对应的记录,错误代码:{model}");
                return false;
            }
            else
            {
                try
                {
                    byte[] fileData = Convert.FromBase64String(model);
                    string fileName = textBoxX_FormNo.Text.Trim() + textBoxX_Formtitle.Text.Trim() + ".xlsx";
                    string dirPath = textBoxX2.Text.Trim();
                    if (!Directory.Exists(dirPath))
                    {
                        Directory.CreateDirectory(dirPath);
                    }
                    string filePath = Path.Combine(dirPath, fileName);
                    if (System.IO.File.Exists(filePath))
                    {
                        System.IO.File.Delete(filePath);
                    }

                    FileStream fs = new FileStream(filePath, FileMode.CreateNew);
                    BinaryWriter bw = new BinaryWriter(fs);
                    bw.Write(fileData, 0, fileData.Length);
                    bw.Close();
                    fs.Close();
                    return true;
                }
                catch (Exception ex)
                {
                    MessageBoxEx.Show(ex.Message);
                    return false;
                }
            }
        }

        /// <summary>
        /// 接口入参拼接
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        private string LoadXmls(string data)
        {
            XmlDocument doc1 = new XmlDocument();
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.Append($"<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:web='http://webservice.review.km.kmss.landray.com/'>" +
                                     $"<soapenv:Header/>" +
                                         $"<soapenv:Body>" +
                                             $"<web:getFile>" +
                                                $"<arg0>{data}</arg0>" +
                                             $"</web:getFile>" +
                                     $"</soapenv:Body>" +
                                 $"</soapenv:Envelope>");
            return stringBuilder.ToString();
        }


        /// <summary>
        /// 调用soap协议接口   webservice    wsdl   
        /// </summary>
        /// <param name="url"></param>
        /// <param name="method"></param>
        /// <param name="contenttype"></param>
        /// <param name="header"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        private static string Http(string url, string method = "post", string contenttype = "text/xml;charset=utf-8", Hashtable header = null, string data = null)
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = string.IsNullOrEmpty(method) ? "post" : method;
            request.ContentType = string.IsNullOrEmpty(contenttype) ? "text/xml;charset=utf-8" : contenttype;
            if (header != null)
            {
                foreach (var i in header.Keys)
                {
                    request.Headers.Add(i.ToString(), header[i].ToString());
                }
            }
            if (!string.IsNullOrEmpty(data))
            {
                Stream RequestStream = request.GetRequestStream();
                byte[] bytes = Encoding.UTF8.GetBytes(data);
                RequestStream.Write(bytes, 0, bytes.Length);
                RequestStream.Close();
            }
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream ResponseStream = response.GetResponseStream();
            StreamReader StreamReader = new StreamReader(ResponseStream, Encoding.GetEncoding("utf-8"));
            string re = StreamReader.ReadToEnd();
            StreamReader.Close();
            ResponseStream.Close();
            return re;
        }


                  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值