簡體   English   中英

服務器無法識別HTTP標頭SOAPAction的值

[英]Server not recognize the value of HTTP Header SOAPAction

我正試圖從名為SmarterTrack的軟件中實現Web服務,只是我沒有得到它...給我以下錯誤:

服務器無法識別HTTP標頭SOAPAction的值: http:// localhost:9996 / Services2 / svcTickets.asmx?op = CreateTicket

我已經直接在瀏覽器中對其進行了測試,並且效果非常好。

Sub Execute()
Dim request As HttpWebRequest = CType(WebRequest.Create("http://localhost:9996/Services2/svcTickets.asmx"), HttpWebRequest)
request.Method = "POST"
request.Host = "localhost:9996"
request.ContentType = "text/xml; charset=utf-8"
request.Headers.Add("SOAPAction", "http://localhost:9996/Services2/svcTickets.asmx?op=CreateTicket")
request.Method = "POST"
Dim soapEnvelopeXml As New XmlDocument()
soapEnvelopeXml.LoadXml("<?xml version=""1.0"" encoding=""utf-8""?>" & ControlChars.CrLf &
"<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & ControlChars.CrLf &
"<soap:Body>" & ControlChars.CrLf &
"<CreateTicket xmlns=""http://localhost:9996/Services2/svcTickets.asmx"">" & ControlChars.CrLf &
"<authUserName>admin</authUserName>" & ControlChars.CrLf &
"<authPassword>teste123</authPassword>" & ControlChars.CrLf &
"<departmentID>3</departmentID>" & ControlChars.CrLf &
"<groupId>3</groupId>" & ControlChars.CrLf &
"<userIdOfAgent>2</userIdOfAgent>" & ControlChars.CrLf &
"<toAddress>teste@teste.pt</toAddress>" & ControlChars.CrLf &
"<subject>test</subject>" & ControlChars.CrLf &
"<body>teste</body>" & ControlChars.CrLf &
"<isHtml>True</isHtml>" & ControlChars.CrLf &
"<setWaiting>True</setWaiting>" & ControlChars.CrLf &
"<sendEmail>True</sendEmail>" & ControlChars.CrLf &
"</CreateTicket>" & ControlChars.CrLf &
"</soap:Body>" & ControlChars.CrLf &
"</soap:Envelope>")
Using stream As Stream = request.GetRequestStream()
    soapEnvelopeXml.Save(stream)
End Using
Using response As WebResponse = request.GetResponse()
    Using rd As New StreamReader(response.GetResponseStream())
        Dim soapResult As String = rd.ReadToEnd()
        Console.WriteLine(soapResult)
    End Using
End Using
End Sub

我將以下wsdl作為服務參考直接導入到Visual Studio中,只是在模擬域。 我做得對嗎? http://portal.smartertools.com/Services2/svcTickets.asmx?WSDL

在此頁面上查看http://portal.smartertools.com/Services2/svcTickets.asmx?op=CreateTicket時,您可以看到示例請求。 注意?op=CreateTicket作為此測試表單的參數。

閱讀同一頁面,您將看到以下示例:

SOAPAction: "http://www.smartertools.com/SmarterTrack/Services2/svcTickets.asmx/CreateTicket"

這是您必須作為SOAPAction標頭發送到您的請求中的值(可能帶有修改的主機)。

您已經在演示中提供了帶有?op=CreateTicket的測試表單的URL,但這不是SOAPAction。

可以將SOAPAction視為獨立於動作的標識,與動作本身的URL無關。 即使它是從.NET Web服務中的此URL派生的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM