- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在构建一个网络服务来接受来自公司的通知。该公司通知我该服务的结构不正确,并为我提供了可用的网络服务的 .asmx。它看起来像这样:
请求:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<AuthenticationInfo
xmlns="http://www.usps.com/postalone/services/UserAuthenticationSchema">
<UserId xmlns="">string</UserId>
<UserPassword xmlns="">string</UserPassword>
</AuthenticationInfo>
<fullServiceAddressCorrectionNotification
xmlns="http://www.usps.com/postalone/services/POCustomerMailXMLServices">string</fullServiceAddressCorrectionNotification>
</soap12:Body>
</soap12:Envelope>
回应:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<FullServiceNixieDetailNotificationResponse
xmlns="http://idealliance.org/maildat/Specs/md091/mailxml70C/mailxml">
<FullServiceNixieDetailNotificationResult>string</FullServiceNixieDetailNotificationResult>
</FullServiceNixieDetailNotificationResponse>
</soap12:Body>
</soap12:Envelope>
我的看起来像这样:请求:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<FullServiceNixieDetailNotification
xmlns="http://idealliance.org/maildat/Specs/md091/mailxml70C/mailxml">
<AuthenticationInfo>
<UserID>string</UserID>
<Password>string</Password>
</AuthenticationInfo>
<fullServiceAddressCorrectionNotification>string</fullServiceAddressCorrectionNotification>
</FullServiceNixieDetailNotification>
</soap12:Body>
</soap12:Envelope>
回应:
<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
<soap12:Body>
<notificationResponse
xmlns="http://www.usps.com/postalone/services/POCustomerMailXMLServices">string</notificationResponse>
</soap12:Body>
</soap12:Envelope>
如您所见,我的东西被包裹在一个我需要删除的额外元素中。不幸的是,我不知道该怎么做。我的网络服务代码如下:
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.Data.SqlClient
Public Structure AuthenticationInfoType
Dim UserID As String
Dim Password As String
End Structure
' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
' <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://idealliance.org/maildat/Specs/md091/mailxml70C/mailxml")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class USPSMailXML
Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function FullServiceNixieDetailNotification(ByVal AuthenticationInfo As AuthenticationInfoType, ByVal fullServiceAddressCorrectionNotification As String) As String
'Some code here
Return "MyResponse"
End Function
最佳答案
在讨论实际问题之前先介绍一些事情。
您应该做的第一件事就是摆脱 ASMX 并使用 WCF。如果您还不了解 WCF,您将有一个学习曲线。但我猜测 - 不要误解 - 您并不是真正的 ASMX 专家。如果是这样,请不要花时间成为 ASMX 专家,因为这已经是昨天的技术了;投入一些时间学习WCF。这对您、对您的公司都更好。
为了弄清楚术语,您显示的前两个片段既不是 ASMX,也不是 WSDL。它们是实际的线路级消息。
无论您选择何种实现技术,让我告诉您,您显示的示例传入和传出消息都非常奇怪。首先,它不符合 WSI BP1.0:传入的消息元素未包装在顶级元素中。为什么不?然而,响应消息包装在顶级元素中。为什么?这种不一致似乎是任意的。此外,元素名称均为 TitleCase,除了 fullServiceAddressCorrectionNotification(使用驼峰式命名法)之外。为什么?此外,传入消息是 USPS 命名空间,但参数使用 null 命名空间。啊?谁做的??这是合法的,但看起来vvvverrrry很奇怪。最后,响应上的 xml 命名空间与传入消息上的 xml 命名空间完全不同。 (我可以想象最后一个的充分理由)。我猜你不负责设计这些消息。但这些不一致给我带来了危险信号。这就是我所说的 jalopy 消息设计。
好吧,抛开所有这些......
有一种方法可以在 ASMX 中调整请求和响应,使用 SoapDocumentMethodAttribute ,以及 XmlElement 属性以及现有 WebMethod 属性的战略放置。 SoapDocumentMethodAttribute 使您可以访问旋钮和控制杆来指定传入和传出消息的元素名称和命名空间。
这应该会让你非常接近:
<%@
WebService
Language="VB"
Class="USPSMailXML"
%>
Imports System
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Xml.Serialization
Public Structure AuthenticationInfoType
<XmlElement(Namespace := "")> _
Dim UserID As String
<XmlElement(Namespace := "")> _
Dim Password As String
End Structure
Public Structure NixieResponse
<XmlElement("FullServiceNixieDetailNotificationResult")> _
Dim Message As String
End Structure
' Must not claim WSI compliance; there are multiple toplevel elements in the Request body
'
'<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<System.Web.Services.WebService(Namespace:="http://idealliance.org/maildat/Specs/md091/mailxml70C/mailxml"), _
System.Web.Services.WebServiceBinding(ConformsTo := WsiProfiles.None), _
ToolboxItem(False)> _
Public Class USPSMailXML
Inherits System.Web.Services.WebService
<WebMethod(), _
SoapDocumentMethod( _
Action := "", _
RequestElementName := "AuthenticationInfo", _
ResponseElementName := "FullServiceNixieDetailNotificationResponse", _
RequestNamespace := "http://www.usps.com/postalone/services/UserAuthenticationSchema", _
ResponseNamespace := "http://idealliance.org/maildat/Specs/md091/mailxml70C/mailxml", _
Use := System.Web.Services.Description.SoapBindingUse.Literal, _
ParameterStyle := System.Web.Services.Protocols.SoapParameterStyle.Bare)> _
Public Function FullServiceNixieDetailNotification(ByVal AuthenticationInfo As AuthenticationInfoType, _
<XmlElement(Namespace := "http://www.usps.com/postalone/services/POCustomerMailXMLServices")> _
ByVal fullServiceAddressCorrectionNotification As String) _
As <XmlElement("FullServiceNixieDetailNotificationResponse")> NixieResponse
Dim r As New NixieResponse
r.Message = "My Response"
Return r
End Function
End Class
我必须将其标记为 ParameterStyle = Bare,因为传入消息有 2 个顶级元素。这意味着传出的消息也是裸露的,在您的情况下这不是您想要的。因此,传出的消息只是一个字符串 - 我必须将其包装到一个结构中,以便获得您显示的形状。
我已经评论了传入和传出消息的设计。如果消息设计更加“理智”,那么其中一些扭曲就没有必要了。
关于vb.net - .NET 网络服务。 (ASMX) 如何塑造请求和响应消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1930791/
我正在尝试检查 Entry 中是否存在重复项,并使用内联消息提醒用户该数字存在。 $(document).ready(function(){ $("#con1").blur(function(
我有一个基于类的 View 。我在引导模式上使用 Ajax。为了避免页面刷新,我想使用此类基于 View 返回 JSON 响应而不是 HTTP 响应,但我只看到了如何为基于函数的 View 返回 JS
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个大型内部企业基于 Web 的应用程序在 IIS6 上运行 ASP.NET 3.5,生成 401 个“未经授权”响应,然后是 200 个“Ok”响应(如 Fiddler 所述)。我知道为什么会发
感谢您研究我的问题。 我有一个node/express服务器,配置了一个server.js文件,它调用urls.js,而urls.js又调用 Controller 来处理http请求,所有这些都配置相
当我使用以下命令时,我得到正确的 JSON 响应: $ curl --data "regno=&dob=&mobile=" https://vitacademics-rel.herokuapp.co
我有一个非常简单的 RESTful 服务,它通过 POST 接收一些表单数据,其目的是在云存储(Amazon S3、Azure Blob 存储等)中简单地保留文本主体(具有唯一 ID)作为一个文件..
UDP 不发送任何 ack,但它会发送任何响应吗? 我已经设置了客户端服务器UDP程序。如果我让客户端向不存在的服务器发送数据,那么客户端会收到任何响应吗? 我的假设是; 客户端 --> 广播服务器地
我有一个电梯项目,其中 有一个扩展 RestHelper 的类,看起来像这样 serve{ "api" / "mystuff" prefix { case a
我们正在寻求覆盖 Kong 错误响应结构并编写自定义消息(即用我们的自定义消息替换“超出 API 速率限制”、“无效的身份验证凭据”等)。 我们要找的错误响应结构(代码是自定义的内部错误代码,与HTT
我正在尝试监听 EKEventStoreChangedNotification 以检查当我的应用程序处于后台时日历是否已更改。 我在 View Controller 的 initWithNibMeth
我了解 javascript,并且正在学习 ASP.NET C# 我想要做什么(完成的是javascript): document.getElementById('divID-1'
是否可以过滤所有 har 对象并仅获取 POST 请求/响应?也许在初始化 BrowserMobProxyServer 期间是这样做的方法?我需要将 har 对象保存到文件中并上传到 har 查看器。
我正在尝试向 Oauth 的 API 发送响应。遗憾的是,Symfony2 文档在解释 $response->headers->set(...); 的所有不同部分方面做得很差。 这是我的 OauthC
我正在尝试测试用例来模拟 api 调用,并使用 python 响应来模拟 api 调用。 下面是我的模拟, with responses.RequestsMock() as rsps: url
在尝试在 Haskell 中进行一些领域驱动设计时,我发现自己遇到了这个问题: data FetchAccessories = FetchAccessories data AccessoriesRes
我正在与 ANT+ USB 棒连接,并用项目 react 器替换我自己天真的“MessageBus”,因为它看起来非常合适。 USB接口(interface)本质上是异步的(单独的输入/输出管道),我
我正在将项目迁移到AFNetworking 2.0。使用AFNetworking 1.0时,我编写了代码来记录控制台中的每个请求/响应。这是代码: -(AFHTTPRequestOperation *
我有以下代码段。 ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){
我有问题......我在 php 中有一个监听器脚本可以执行以下操作: if ($count != 1) {echo 'no';} else { echo "yes";} 因此它会回显"is"或“
我是一名优秀的程序员,十分优秀!