tripservice wsdlをthis linkから取るこのwsdlでは、from要素を以下のものに置き換えました(nillableにtrueを加え、min長さとmax lengthの長さの制限を追加しました)。vb.net soapクライアントでリクエストを生成
<xs:element minOccurs="0" name="from" nillable="true">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="12"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
私のvb.netクライアントでは、サービス参照を追加してサービスを呼び出すと、wsdlがローカルフォルダに保存されました。
Dim objproxy As New Tripservice.TripPriceServiceFacadeClient
Dim gh As New Tripservice.trip
gh.adults = 9
gh.duration = 8
gh.rooms = 8
gh.to = "p"
objproxy.getTripPrice(gh)
エンドポイントが見つかりません例外が発生しますが、私は要求されているXMLに興味があります。トレースを有効にして、以下の要求が生成されていることがわかりました。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<getTripPrice xmlns="http://trip.price.service">
<trip xmlns="">
<adults>9</adults>
<duration>8</duration>
<from xsi:nil="true"/>
<rooms>8</rooms>
<to>p</to>
</trip>
</getTripPrice>
</s:Body>
</s:Envelope>
XSIから要素
:nilを=「true」が、私は要求を生成するために私vb.netコード内の要素に触れていない午前にもかかわらず、生成されます。この要素は、wsdl(min occur = 0)ごとにオプションです。どのようにすれば、要素名からの要求を送らずに要求を渡すことができますか?
要求xmlを受け入れるWebサービスでは、タグが存在し、それがnillable = trueである場合に基づいて処理を行います。ただし、手を触れていなければ、この要求に常に従います。 – Suresh
@ Suresh、私はそれが旅行から* a *とa *への*なしで値段をつけることができるということが奇妙なことを契約で見つける。これらはオプションなので(?!)、サービスのドキュメントは、どちらか一方または両方が欠落している場合の動作を教えてください。私はサービスの所有者に連絡します。もう1つのアドバイス:いかなる場合でも、契約は元のものと一致しない方法で変更されるべきです(nillableの導入は互換性がありますが、合同ではありません)。 XMLスキーマのリファクタリングがツールに必要な場合がありますが、あなたの場合、なぜそれを使っているのかわかりません... –