通过http请求调用ASP.NETWeb服务方法我想用C#通过httpPOST请求调用ASP.NETWeb服务(即我不会想使用运行wsdl.exe生成的SoapHttpClientProtocol对象)。据我所知,这个过程涉及:使用方法创建一个指向Web服务的url/方法的HttpWebRequest对象;创建一个SOAPxml信封;使用XmlSerializer序列化我想传递给web方法的任何参数;发出请求并解析响应。我想这样做而不必复制和使用生成的代码。(1)看起来很简单;(2)我不知道信封在这里是不是标准的,或者它应该如何根据我调用的web服务方法而改变。我想如果服务需要,我可能需要添加自定义soap标头?(3)这样做的过程是怎样的?我假设我需要做这样的事情:MyClassmyObj;XmlSerializerser=newXmlSerializer(myObj.GetType());TextWriterwriter=newStringWriter();ser.Serialize(writer,myObj);字符串soapXml=writer.ToString();writer.Close();另外,我认为我应该将soapXml添加到soap:Body元素(4)我相信我应该提取和反序列化soap:Body元素的内容。是否可以使用(3)中的相反过程?谢谢,K。我不知道为什么要这样做,但这里有一个手动调用Web服务的示例。确保永远不要在生产代码中使用它。假设您有以下SOAP服务:publicclassFoo{publicintId{get;放;}公共字符串名称{得到;放;}}[WebService(Namespace="http://tempuri.org/")][WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]publicclassService1:System.Web.Services.WebService{[WebMethod]publicstringHelloWorld(Foofoo){返回“你好世界”;您可以像这样手动调用它:教程:通过http请求调用ASP.NETWeb服务方法来共享所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注——Headers.Add("SOAPAction",""http://tempuri.org/HelloWorld"");client.Headers.Add("Content-Type","text/xml;charset=utf-8");varpayload=@"1Bar";vardata=Encoding.UTF8.GetBytes(有效负载);varresult=client.UploadData("http://localhost:1475/Service1.asmx",data);Console.WriteLine(Encoding.Default.GetString(result));}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
