0

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>&lt;Message
 MessageType='FindCaseByCaseNumber' NodeID='1' ReferenceNumber='1'
UserID='1'
Source='APIMessage'&gt;&lt;CaseNumber&gt;T-4-CV-2011-004617&lt;/CaseNumber&gt;
&lt;/Message&gt;</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>&lt;Message
 MessageType=&quot;FindCaseByCaseNumber&quot; NodeID=&quot;1&quot; 
ReferenceNumber=&quot;1&quot; UserID=&quot;1&quot; Source=&quot;
APIMessage&quot;&gt;
&lt;CaseNumber&gt;T-4-CV-2011-004617&lt;/CaseNumber&gt;
  &lt;/Message&gt;</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 を使用していましたが、これが最終的に問題でした。文字のエスケープではありません!

4

1 に答える 1

0

バックスラッシュを使用して、文字列内の引用符をエスケープできます。

OdysseyMessageXML.addTextNode("<Message
MessageType=\"FindCaseByCaseNumber\" NodeID=\"1\" ReferenceNumber=\"1\"
UserID=\"1\"
Source=\"APIMessage\"><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>"
); 
于 2011-05-06T03:08:15.843 に答える