Tag: soap

使用WSDL(SOAP)将PayPal集成到C#/ .NET解决方案中

环境:Visual Studio 2010 Professional .NET Framework 4 C# 使用以下WSDL添加了服务引用: https : //www.paypalobjects.com/wsdl/PayPalSvc.wsdl 问题1 :当像这样编译时,从Reference.cs文件中获取一堆错误。 看起来像名称空间错误 它提到它在我的项目的命名空间中找不到服务引用命名空间。 因此,我进入了Reference.cs文件,但是当我收到此错误时,我在方法名称之前删除了项目的命名空间,现在它编译了。 最后访问所有类。 使用所需属性创建并填充DoDirectPaymentReq和CustomSecurityHeader对象。 创建了一个PayPalAPIAAInterfaceClient类的实例,该类包含DoDirectPayment方法,该方法接收 CustomSecurityHeader和DoDirectPaymentReq类型的参数。 看起来像这样: using (var client = new **PayPalAPIAAInterfaceClient**()) { var credentials = new CustomSecurityHeaderType { Credentials = new UserIdPasswordType { Username = “xxxxxxxx@xxxxxx.com”, Password = “xxxxxxx”, Signature = “jksadfuhasfweakjhasf” } }; _doDirectPaymentResponseType = client.DoDirectPayment(ref credentials, […]

SOAP使用C#

你如何使用C#使用SOAP? 有一个简单但有效的教程吗?

IRS ACA SOAP边界错误

我正在使用httpClient将一个GZip压缩SOAP请求发布到IRS ACA Web服务。 您将在下面找到SOAP请求。 我在下面引用了边界错误。 任何人都可以指出我的请求有问题吗? 多部分流在遇到终止边界之前结束 POST URL HTTP/1.1 SOAPAction: BulkRequestTransmitter Accept-Encoding: gzip, deflate Content-Type: multipart/related; type=”application/xop + xml”; start=””; start-info=”text/xml”; boundary=”————030003010806000401010306″ MIME-Version: 1.0 Host: HOST Content-Length: 17797 Expect: 100-continue Connection: Keep-Alive ————–030003010806000401010306 Content-Type: application/xop+xml; type=”text/xml”; charset=utf-8 Content-ID: Content-Transfer-Encoding: 8bit Reference1DigestValue Reference2DigestValue= Reference3DigestValue= SignedInfo Signature Value Public Key 2016-03-07T16:25:11Z 2016-03-07T16:35:11Z 2015 0 EIN O […]

WCF – 找不到X509SecurityToken的令牌validation器

我正在尝试调用第三方Web服务,我已经到了能够在服务跟踪查看器中实际看到服务器响应的地步。 但是,我不断从.NET获得exception: Cannot find a token authenticator for the ‘System.IdentityModel.Tokens.X509SecurityToken’ token type. Tokens of that type cannot be accepted according to current security settings. 我的app.config看起来像这样(用占位符替换了Thumbprints): <defaultCertificate findValue="” x509FindType=”FindByThumbprint” storeLocation=”CurrentUser” storeName=”TrustedPeople”/> <clientCertificate findValue="” x509FindType=”FindByThumbprint”/> 现在,我已经尝试了有关此exception的所有内容。 将authenticationMode设置为MutualCertificate :服务器响应404 设置allowSerializedSigningTokenOnReply :无变化 来自服务器的响应包含: 我可以在某处添加x508SecurityToken处理程序,否则忽略此错误(这样做是否安全) exception堆栈跟踪: Server stack trace: at System.ServiceModel.Security.ReceiveSecurityHeader.ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver, IList`1 allowedTokenAuthenticators, SecurityTokenAuthenticator& usedTokenAuthenticator) at System.ServiceModel.Security.ReceiveSecurityHeader.ReadToken(XmlDictionaryReader […]

通过http请求调用ASP.NET Web服务方法

我想使用C#通过http POST请求调用ASP.NET Web服务(即我不想使用运行wsdl.exe生成的SoapHttpClientProtocol对象)。 据我所知,这个过程包括: 使用该方法创建指向Web服务的url /方法的HttpWebRequest对象; 创建SOAP xml信封; 使用XmlSerializer序列化我想要传递给Web方法的任何参数; 发出请求并解析响应。 我想这样做而不必复制和使用生成的代码。 (1)看起来很简单; (2)我不知道这里的信封是否标准,或者它应该如何根据我呼叫的网络服务方法改变。 我想如果服务需要,我可能需要添加自定义soap标头? (3)这样做的过程是什么? 我假设我需要做这样的事情: MyClass myObj; XmlSerializer ser = new XmlSerializer(myObj.GetType()); TextWriter writer = new StringWriter(); ser.Serialize(writer, myObj); string soapXml = writer.ToString(); writer.Close(); 另外,我想我应该将soapXml添加到soap:Body元素中 (4)我相信我应该提取和反序列化soap:Body元素的内容。 是否可以使用(3)中的过程的反向? 谢谢, K.

.NET中的SOAP请求

我们正在尝试使用SOAP请求使用Visual Studio C#与预订API进行交互。 我们已经与另一个API的Web服务接口而没有问题,但这个问题certificate是有问题的。 我们已将其添加为服务引用,并且Visual Studio已为其生成所有类和web.config条目,以便一切看起来都很好。 但是,当我们尝试向客户端SOAP服务发出简单请求时,我们会收到以下错误: rpc \ literal SOAP不支持Namespace =’com.hrs.soap.hrs’。 包装元素必须是不合格的。 代码是: PingRequest pingrequest = new PingRequest(); SoapServiceClient service = new SoapServiceClient(); service.ping(pingrequest); 这是Web.config文件中添加的内容: 根据文档,请求应如下所示: 完整堆栈跟踪如下: [InvalidOperationException: Namespace=’com.hrs.soap.hrs’ is not supported with rpc\literal SOAP. The wrapper element has to be unqualified.] System.Xml.Serialization.XmlReflectionImporter.CheckTopLevelAttributes(XmlAttributes a, String accessorName) +842469 System.Xml.Serialization.XmlReflectionImporter.ImportAccessorMapping(MemberMapping accessor, FieldModel model, XmlAttributes a, String […]

使用C#解析SOAP响应

我试图从下面的SOAP获取faultcode,faultstring和OrderNumber的值 1234 SaveOrder:SetrsOrderMain:Cannot change OrderDate if GLPeriod is closed, new OrderDate is 3/2/2010:Ln:1053 这是我在C#中的代码 XDocument doc = XDocument.Load(HttpContext.Current.Server.MapPath(“XMLexample.xml”)); var errorDetail = new EcourierErrorDetail { FaultCode = from fc in doc.Descendants(“faultcode”) select fc.Value, FaultString = from fs in c.Descendants(“faultstring”) select fs.Value, OrderNumber = from o in doc.Descendants(“detail”).Elements(“Order”).Attributes(“OrderNumber”) select o.Value }; return errorDetail; 我能够获取faultcode和faultstring的值,但不能获取OrderNumber的值。 我得到“枚举没有结果。” 有人可以帮忙吗? 谢谢。

WCF客户端挂起响应

我有一个指向WebSphere服务的WCF客户端(在Win7上运行)。 从测试工具(我的Web应用程序之外的一个小测试夹具)开始,一切都很好但是当我对服务的调用来自我的web项目时,其中一个调用(并且只有那个调用)反序列化的速度非常慢(需要几分钟VS秒)而不仅仅是第一次 。 我可以从fiddler看到响应快速返回,但是在调试器遇到下一行代码之前,WCF客户端挂起响应本身超过一分钟 ,几乎如果客户端反序列化有问题。 只有在响应中我有一个给定的pdf字符串(操作生成一个pdf),base64编码的chunked时才会发生这种情况。 例如,如果服务引发了错误(因此pdf字符串不存在),则立即反序列化响应。 再次,如果我通过Soap-UI或从Web项目外部发送完全相同的信封,一切都很好。 我很遗憾 – 我应该寻找什么,是否有一些配置设置可能会有所作为? 任何帮助赞赏! 编辑 : 我根据相同的服务合同编写了一个存根。 使用完全相同的basicHttpBinding并返回完全相同的pdf字符串,没有注册延迟。 我认为这排除了字符串和绑定作为可能的原因。 还剩什么?

如何解释错误’客户发现’text / html’的响应内容类型

我正在使用C#并通过自动生成的C#代理对象连接到WebService。 我打电话的方法可以长时间运行,有时会超时。 我得到了不同的错误,有时我得到一个System.Net.WebException或一个System.Web.Services.Protocols.SoapException 。 这些exception具有我可以查询的属性,以查找特定类型的错误,我可以从中向用户显示人性化版本。 但有时我只是得到一个InvalidOperationException ,它有以下消息。 有没有什么方法可以解释这是什么,如果没有通过字符串挖掘我认识的东西,感觉非常脏,并且不是国际化不可知,错误信息可能会以不同的语言回来。 Client found response content type of ‘text/html; charset=utf-8’, but expected ‘text/xml’. The request failed with the error message: — Request timed out. body {font-family:”Verdana”;font-weight:normal;font-size: .7em;color:black;} p {font-family:”Verdana”;font-weight:normal;color:black;margin-top: -5px} b {font-family:”Verdana”;font-weight:bold;color:black;margin-top: -5px} H1 { font-family:”Verdana”;font-weight:normal;font-size:18pt;color:red } H2 { font-family:”Verdana”;font-weight:normal;font-size:14pt;color:maroon } pre {font-family:”Lucida Console”;font-size: .9em} .marker {font-weight: bold; color: […]

从WCF创建的ws-security标头中删除timestamp元素

我正在使用来自WCF的旧Java Web服务,该服务需要以下forms的请求: username password … 使用以下配置hack“工作”但我不希望在config中公开用户名和密码: … username password 我想要使​​用的是以下内容: 但是这会在安全元素中生成timestamp元素,java webservice将其置于其中。 我需要做的是从它生成的XML中删除时间戳,或者为我做一些自定义绑定。 我尝试创建自定义凭据,但这只更改了usernameToken元素。 我已经看过许多很多SO问题(许多来自2007年及之前的问题),其中包括以下内容并没有任何乐趣: 从安全性中删除Timestamp元素 如何使WCF客户端符合特定的WS-Security 删除timestamp元素的最佳,最简单和最优雅的方法是什么。 提前致谢