上传xml格式数据

说明:对接接口时对方给了wsdl,为了项目不导入N个wsdl转的cs文件造成项目沉积。
代码如下

//该方法内容为了拼接和使用soapUi请求时一致发送的xml
private StringBuilder GetStringBud(string action, Dictionary<string, string> dicBody)
        {
            StringBuilder soap = new StringBuilder();
            soap.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
            soap.Append("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:com=\"http://commont\">");
            soap.Append("<soapenv:Body>");
            soap.Append("<com:" + action + ">");
            if (dicBody != null && dicBody.Count > 0)
            {
                foreach (var item in dicBody)
                {
                    soap.Append("<com:" + item.Key + ">" + item.Value + "</com:" + item.Key + ">");
                }
            }
            soap.Append("</com:" + action + ">");
            soap.Append("</soapenv:Body>");
            soap.Append("</soapenv:Envelope>");
            return soap;
        }
		//post请求方法,url为解析后的webserver路径,非.wsdl
        private saveTemperatureResponse soapPost(string url, string action, Dictionary<string, string> dicBody)
        {
            string result = "";
            Uri uri = new Uri(url);
            var soap = GetStringBud(action, dicBody);
            System.Net.WebRequest webRequest = System.Net.WebRequest.Create(uri);
            webRequest.ContentType = "text/xml; charset=utf-8"; //注意该参数需和调试工具中一致
            webRequest.Method = "POST";
			webRequest.Headers.Add("SOAPAction", url+"?wsdl");//必须要添加头部信息,Url?wsdl 指完整的wsdl路径。这个地方困扰了一天,没有添加一直报500异常。

            using (Stream requestStream = webRequest.GetRequestStream())
            {
                byte[] paramBytes = Encoding.UTF8.GetBytes(soap.ToString());
                requestStream.Write(paramBytes, 0, paramBytes.Length);
            }

            //响应
            WebResponse webResponse = webRequest.GetResponse();
            using (StreamReader myStreamReader = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))
            {
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.LoadXml(myStreamReader.ReadToEnd());//用xml解析接收的内容
                result = xmldoc.InnerText;

                saveTemperatureResponse descJsonStu = JsonConvert.DeserializeObject<saveTemperatureResponse>(result);
                return descJsonStu;
            }

        }

        private class saveTemperatureResponse
        {
            public string message { get; set; }
            public string statusCode { get; set; }

            //public string page { get; set; }

            public SaveTemperatureResponseDto data { get; set; }

        }
        private class SaveTemperatureResponseDto
        {
            public bool SaveTemperature { get; set; }
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值