私は、Web サービスと WSDL についてはまったくの初心者です。
私がやりたいことは、顧客の SOAP メッセージを読み取って処理する Web サービスを構築することです。
私に送信された SOAP メッセージは次のとおりです (SOAP メッセージを削除したことに注意してください)。
<Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">
<soap2:Header>
<wsa:Action>http://htng.org/PWSWG/2010/12/ReservationSynch_SubmitRequest</wsa:Action>
<wsa:ReplyTo>
<wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
</wsa:ReplyTo>
</soap2:Header>
<Body>
<OTA_HotelResNotifRQ>
<POS>
//More tags
</POS>
<HotelReservations>
<HotelReservation RoomStayReservation="true">
<UniqueID Type="14" ID="59071IC000041" />
</HotelReservation>
</HotelReservations>
</OTA_HotelResNotifRQ>
</Body>
</Envelope>
これは私の Web サービス asmx です (ここでも、すぐに切り詰めました)。
[WebMethod]
[SoapDocumentMethodAttribute("http://htng.org/PWSWG/2010/12/ReservationSynch_SubmitRequest", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)]
public OTA_HotelResNotifRS ReservationSynch_SubmitRequest(OTA_HotelResNotifRQ OTA_HotelResNotifRQ)
{
}
問題: メッセージが着信すると、メソッド ReservationSynch_SubmitRequest が起動されますが、OTA_HotelResNotifRQ は null です。顧客は私に WSDL を提供してくれました。私が知る限り、クラスは正しいです。<Body>
タグは気にならない程度ですが、新品ではありません<soap2:Body>
。これは違いがありますか?
顧客のメッセージを変更することはできません。Web サービスを変更して、顧客が私に送ったものを読むことしかできません。asmx に何か足りないものがありますか?
興味がある場合は、WSDL https://interface.synxis.com/interface/ota2010av2/OTA2010A.svc.wsdlをご覧ください。