c#调用参数是xml的外部接口(wsdl)

 string url = "http://xxxx/service/XChangeServlet?account=00004&groupcode=001";
            XDocument document = XDocument.Load(@"E:\新建文件夹\NCSCXML\CESHI.xml");
            string xmlFileName = document.ToString();
            //第一步---构建HttpWebRequest
            HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
            WebReq.ContentType = "text/xml";
            WebReq.Method = "POST";
            //第二步--写入参数
            //WebReq.ContentLength = Encoding.UTF8.GetByteCount(xmlFileName);
            using (StreamWriter requestW = new StreamWriter(WebReq.GetRequestStream()))
            {
                requestW.Write(xmlFileName);
            }
            //第三步--获取返回的结果
            string backstr = null;
            using (HttpWebResponse response = (HttpWebResponse)WebReq.GetResponse())
            {
                StreamReader sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8);
                backstr = sr.ReadToEnd();
            }
            return backstr;
        }

 

以下是C#调用wsdl接口的三种方法示例: 1. 使用Visual Studio自动生成代理类: ```csharp // 引用WebService接口 using WebServiceNamespace; // 创建代理类实例 WebServiceClient client = new WebServiceClient(); // 调用接口方法 string result = client.MethodName(parameter); ``` 2. 使用命令行工具wsdl.exe生成代理类: ```shell // 打开命令提示符 // 进入wsdl.exe所在目录 // 执行以下命令生成代理类 wsdl /language:c# /out:生成类的物理路径 /url:WebService接口URL或wsdl文件路径 // 在代码中引用生成的代理类 using WebServiceNamespace; // 创建代理类实例 WebServiceClient client = new WebServiceClient(); // 调用接口方法 string result = client.MethodName(parameter); ``` 3. 手动解析wsdl文件: ```csharp // 引用System.Web.Services和System.Web.Services.Description命名空间 using System.Web.Services; using System.Web.Services.Description; using System.Xml; // 创建WebService描述文件的URL string wsdlUrl = "WebService接口URL或wsdl文件路径"; // 创建ServiceDescription对象 ServiceDescription serviceDescription = ServiceDescription.Read(wsdlUrl); // 创建ServiceDescriptionImporter对象 ServiceDescriptionImporter importer = new ServiceDescriptionImporter(); importer.ProtocolName = "Soap"; // 指定协议为Soap // 添加ServiceDescription对象 importer.AddServiceDescription(serviceDescription, null, null); // 创建CodeNamespace对象 CodeNamespace codeNamespace = new CodeNamespace("WebServiceNamespace"); // 创建CodeCompileUnit对象 CodeCompileUnit codeCompileUnit = new CodeCompileUnit(); codeCompileUnit.Namespaces.Add(codeNamespace); // 生成代理类代码 ServiceDescriptionImportWarnings warnings = importer.Import(codeNamespace, codeCompileUnit); // 使用CodeDomProvider编译代理类 CodeDomProvider codeDomProvider = CodeDomProvider.CreateProvider("CSharp"); CompilerParameters compilerParameters = new CompilerParameters(); compilerParameters.GenerateExecutable = false; compilerParameters.GenerateInMemory = true; CompilerResults compilerResults = codeDomProvider.CompileAssemblyFromDom(compilerParameters, codeCompileUnit); // 获取生成的代理类类型 Type proxyType = compilerResults.CompiledAssembly.GetTypes().FirstOrDefault(t => t.Name == "WebServiceClient"); // 创建代理类实例 object proxyInstance = Activator.CreateInstance(proxyType); // 调用接口方法 MethodInfo method = proxyType.GetMethod("MethodName"); string result = (string)method.Invoke(proxyInstance, new object[] { parameter }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值