我正在访问一个Web服务,该服务提供了一种方法ProcessMessage
,此方法如下所示:
<System.Web.Services.Protocols.SoapHeaderAttribute("payloadManifest", Direction:=System.Web.Services.Protocols.SoapHeaderDirection.InOut), _
System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://exampleurl/operations/ProcessMessage/v1_01/GetTest1" & _
"", RequestNamespace:="http://exampleurl", ResponseNamespace:="http://exampleurl", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)> _
Public Sub ProcessMessage(ByRef payload As Payload)
Try
Dim results() As Object = Me.Invoke("ProcessMessage", New Object() {payload})
payload = CType(results(0), Payload)
Dim i As Integer = 0
Catch ex As Exception
End Try
End Sub
这样可以正常工作,但是,此方法将用于各种不同的功能。如果更改了SoapDocumentMethodAttribute
Action
ProcessMessage
,则会返回不同的值。
示例:
更改
System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://exampleurl/operations/ProcessMessage/v1_01/GetTest1"
要
System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://exampleurl/operations/ProcessMessage/v1_01/GetTest2"
现在的问题是,据我所知,这个Action
需要硬编码到文件中,因此我只能对每个编译的程序运行1个方法。有没有办法动态改变Action
或者我应该以不同的方式接近它?
答案 0 :(得分:0)
好的,我找到了一个解决方法,但它并不完全理想。基本上,我们设置此属性以填充SOAPAction
标头。但是我们决定直接更改SOAPAction
标题,而不是通过属性。更简单但肯定是一种黑客方法。