SAAJ SOAP メッセージ内に XML メッセージを作成するこのコードがあります。
OdysseyMessageXML.addTextNode("<Message
MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1'
UserID='1'
Source='APIMessage'><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>"
);
メッセージが完成すると、次のようになります。
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tyl="http://www.tylertech.com/"><SOAP-ENV:Header/>
<SOAP-ENV:Body><tyl:OdysseyMsgExecution><tyl:OdysseyMessageXML><Message
MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1'
UserID='1'
Source='APIMessage'><CaseNumber>T-4-CV-2011-004617</CaseNumber>
</Message></tyl:OdysseyMessageXML>
<tyl:siteKey>NMODYSSEYMETRO</tyl:siteKey>
</tyl:OdysseyMsgExecution></SOAP-ENV:Body></SOAP-ENV:Envelope>
FindCaseByCaseNumber と NodeID の周りの ' マークはエスケープされていないことに注意してください。このような結果を得るにはどうすればよいですか:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tyl="http://www.tylertech.com/">
<soapenv:Header/>
<soapenv:Body>
<tyl:OdysseyMsgExecution>
<tyl:odysseyMessageXML><Message
MessageType="FindCaseByCaseNumber" NodeID="1"
ReferenceNumber="1" UserID="1" Source="
APIMessage">
<CaseNumber>T-4-CV-2011-004617</CaseNumber>
</Message></tyl:odysseyMessageXML>
<tyl:siteKey> NMODYSSEYMETRO </tyl:siteKey>
</tyl:OdysseyMsgExecution>
</soapenv:Body>
</soapenv:Envelope>
FindCaseByCaseNumber を " で囲む
誰かが私たちが間違っていることを教えてもらえますか? コード ''' と """ の addTextNode 部分で試しましたが、引用符をエスケープすることに失敗しました。
ありがとう!レスリー
編集:
メッセージを作成しているコードのこのセクションでは、次のようになります。
OdysseyMessageXML.addTextNode("<Message
MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1'
UserID='1'
Source='APIMessage'><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>"
);
次のようにする必要があります (各値を囲む二重引用符を参照してください)。
OdysseyMessageXML.addTextNode("<Message
MessageType="FindCaseByCaseNumber" NodeID="1" ReferenceNumber="1"
UserID="1"
Source="APIMessage"><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>"
);
残念ながら、これは有効な Java コードではありません。FindCaseByCaseNumber に別の " を配置すると、文字列が終了します。最終メッセージで単一の二重引用符をエスケープするために、2 つおよび 3 つの二重引用符を配置しようとしました。
更新: リクエストを受け付けている API は大文字と小文字を区別しているようで、小文字の o ではなく大文字の O を使用していましたが、これが最終的に問題でした。文字のエスケープではありません!