Tag: soap

在.net中的SOAP信封中包装XML

我需要帮助将XML封装在第二方SOAP服务器的SOAP信封中。 第三方为入站请求和出站响应提供了xsd文件。 我已经使用xsd工具获取了这些XSD文件并创建了它们的C#类。 我的问题是我需要用SOAP信封包装序列化的请求,我不知道从哪里开始。 我正在查看Microsoft Web服务增强function3,但这表明它仅适用于.net 2.0和VS2005。 我正在使用VS2012和.net 4.5。 此外,我已经考虑通过Web服务连接到服务器,但它似乎不兼容, 并且没有WSDL 。 以下是SOAP服务器对入站请求的预期示例。 1 12345 这就是序列化XML字符串的样子。 1 12345 代码我用于我的网络请求和响应。 Byte[] byteArray = System.Text.UTF8Encoding.UTF8.GetBytes(data); WebRequest webRequest = WebRequest.Create(@”http://myserver:8888″); webRequest.ContentLength = byteArray.Length; webRequest.ContentType = @”text/xml; charset=utf-8″; webRequest.Headers.Add(“SOAPAction”, @”http://schemas.xmlsoap.org/soap/envelope/”); webRequest.Method = “POST”; Stream requestStream = webRequest.GetRequestStream(); requestStream.Write(byteArray, 0, byteArray.Length); requestStream.Close(); requestStream.Dispose(); WebResponse webResponse = webRequest.GetResponse(); Stream responseStream = […]

.NET Core中的SOAP?

你如何在.NET Core中使用SOAP? .Net Core中是否有Apache CXF的等价物(不只是简单的SOAP客户端,而是全function堆栈)? 对不起,如果这是一个非常基本的问题,到目前为止,我的搜索没有给出任何明确的答案。

如何使用async / await来调用Web服务?

我有一个用Yii编写的web服务 (php框架)。 我使用C#和Visual Studio 2012开发WP8应用程序。 我在项目中添加了一个服务引用(添加服务引用)。 所以我能够使用webservicefunction。 client = new YChatWebService.WebServiceControllerPortTypeClient(); client.loginCompleted += client_loginCompleted; // this.token = e.Result; client.loginAsync(this.username, this.password); client.getTestCompleted += client_getTestCompleted; client.getTestAsync(this.token); function getTestAsync和loginAsync返回void ,两者都是异步的。 函数是否可以返回Task ? 我想在我的程序中使用async / await关键字。 回答: 谢谢您的帮助。 以下代码似乎有效。 internal static class Extension { private static void TransferCompletion( TaskCompletionSource tcs, System.ComponentModel.AsyncCompletedEventArgs e, Func getResult) { if (e.Error != null) […]

如何访问SOAP响应

(如果有任何需要澄清/更多细节请告诉我。) 我有一个应用程序(C#,2. *框架),它使用SOAP与第三方Web服务连接。 我使用thinktecture的WSCF加载项来提供WSDL来创建客户端实现。 由于我无法控制的原因,SOAP消息交换使用WSE2.0来实现安全性(必须修改thinctecture实现以包含WSE2.0引用)。 除了“普通”数据包之外,我还将先前调用的存储X509证书和二进制安全令牌附加到其他Web服务。 我们正在使用某种SSL加密 – 我不知道细节。 所有必要的序列化/反序列化都包含在Web服务客户端中 – 这意味着在调用客户端之后将控制权返回给我时,SOAP响应中包含的整个XML字符串对我来说是不可用的 – 只是反序列化的组件。 不要误解我的意思 – 我认为这很好,因为这意味着我不必自己做。 但是,为了让我有值得存储/存档的东西,我不得不在根元素处重新序列化数据。 这似乎是浪费资源,因为我的结果是在SOAP响应中。 现在我的问题是:如何访问SOAP响应的“清晰”版本,以便我不必重新序列化存储/存档的所有内容? 编辑 – 我的应用程序是一个“无形”的Windows应用程序,作为网络服务运行 – 由WebsphereMQ客户端触发器监视器触发。 我不认为 ASP.NET解决方案会适用。 编辑 – 由于到目前为止的共识是,我的应用程序是否是ASP.NET无关紧要,然后我将给CodeMelt(以及扩展Chris的)解决方案一个镜头。

从SOAP消息中提取SOAP主体

我想从SOAP消息中提取SOAP主体,我在SOAP主体中有一些数据,我必须在日期库中解析,所以这是代码: public string Load_XML(string SoapMessage) { //check soap message if (SoapMessage == null || SoapMessage.Length <= 0) throw new Exception("Soap message not valid"); //declare some local variable int iSoapBodyStartIndex = 0; int iSoapBodyEndIndex = 0; //load the Soap Message //Učitaj string XML-a i pretvori ga u XML XmlDocument doc = new XmlDocument(); try { doc.Load(SoapMessage); […]

对于如何创建SOAP 标头毫不犹豫

我几乎没有使用SOAP协议的经验。 我需要连接到所需标头的服务。 我认为这在Java中有些标准,但在C#中必须手工创建这个头。 这里有没有人能够连接到类似的服务:已创建标题或甚至可能知道一些标准库,这将简化标题的创建? 你能分享一些代码或参考吗? 我还发现了一个线索,如果使用WS2005,可能会生成标头,因为它有WS3插件。 有谁评论这个? 快速浏览一下这个插件后,我在Security头中找到了simmilar字段,但仍然无法创建标头。

如何使用C#发送/接收SOAP请求和响应?

private static string WebServiceCall(string methodName) { WebRequest webRequest = WebRequest.Create(“http://localhost/AccountSvc/DataInquiry.asmx”); HttpWebRequest httpRequest = (HttpWebRequest)webRequest; httpRequest.Method = “POST”; httpRequest.ContentType = “text/xml; charset=utf-8”; httpRequest.Headers.Add(“SOAPAction: http://tempuri.org/” + methodName); httpRequest.ProtocolVersion = HttpVersion.Version11; httpRequest.Credentials = CredentialCache.DefaultCredentials; Stream requestStream = httpRequest.GetRequestStream(); //Create Stream and Complete Request StreamWriter streamWriter = new StreamWriter(requestStream, Encoding.ASCII); StringBuilder soapRequest = new StringBuilder(“”); soapRequest.Append(“Sam”); soapRequest.Append(“”); streamWriter.Write(soapRequest.ToString()); streamWriter.Close(); […]

拦截WCF客户端中的消息

有没有人有任何Web服务扩展的经验? 我花时间尝试从MS示例中创建Web服务扩展。 我有一个.net 3.5 Web服务客户端,通过VS IDE“Project> Add Service Reference”添加对WSDL的引用而构建。 这构建了我的Web服务客户端,一切正常。 我需要截取我的Web服务客户端的请求和响应正文。 我发现了许多对Web服务扩展的引用,但是我已经厌倦了攻击,并且无法解决我的扩展问题。 我在这里使用了MS示例“如何实现SOAP扩展”( http://msdn.microsoft.com/en-us/library/7w06t139.aspx ),它为请求/响应流构建了一个记录器。 相关的MS文章“Soap Message Modification”( http://msdn.microsoft.com/en-us/library/esw638yk(VS.85).aspx )展示了如何为Web客户端启用SOAP扩展: 实现SOAP扩展 有两种方法可以在客户端或服务器应用程序上运行SOAP扩展。 首先,您可以配置应用程序以运行扩展。 要将SOAP扩展配置为针对所有Web服务(尤其是vroot)上的所有Web方法运行,请编辑Web.config文件中的 Element部分。 以下代码显示type属性值必须位于一行,并包含扩展的完全限定名称,以及签名程序集的version,culture和public key标记。 在 我已将traceextension编译到自己的类库中,并在Web服务项目的web.config中引用它,如下所示: 没有快乐。 没有记录任何内容,也没有命中断点。 然后我删除了引用的类,并将源代码放入Web服务项目中。 我尝试添加对它的引用(我的命名空间是ServcieTest001): 我使用以下线程作为指南,使我能够扩展“获取-wot-soap-data-from-a-web-reference-client-running-in-asp-net”( http://stackoverflow.com/questions / 300674 / getting-raw-soap-data-from-a-web-reference-client-running-in-asp-net )。 仍然没有快乐。 然后我从上面的线程中复制了代码,当我发出SOAP请求时仍然无法触发扩展。 任何人都可以指向一个function可下载的Web服务扩展演示项目,所以我可以反汇编它,找出我错过的东西?

有没有办法从ASP.NET WebMethod中获取原始SOAP请求?

例: public class Service1 : System.Web.Services.WebService { [WebMethod] public int Add(int x, int y) { string request = getRawSOAPRequest();//How could you implement this part? //.. do something with complete soap request int sum = x + y; return sum; } }

使用HttpWebRequest类

我实例化HttpWebRequest对象: HttpWebRequest httpWebRequest = WebRequest.Create(“http://game.stop.com/webservice/services/gameup”) as HttpWebRequest; 当我将数据“发布”到此服务时,服务如何知道将数据提交到哪个Web方法? 我没有这个Web服务的代码,我所知道的是它是用Java编写的。