escape-символы в действии SAAJ SOAP - PullRequest
0 голосов
/ 05 мая 2011

У нас есть этот бит кода, создающий сообщение XML в сообщении SAAJ SOAP:

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, которая, в конечном счете, была проблемой, а не экранирующий символ в конце концов!

1 Ответ

0 голосов
/ 06 мая 2011

Вы можете экранировать кавычки в вашей строке с обратной косой чертой:

OdysseyMessageXML.addTextNode("<Message
MessageType=\"FindCaseByCaseNumber\" NodeID=\"1\" ReferenceNumber=\"1\"
UserID=\"1\"
Source=\"APIMessage\"><CaseNumber>T-4-CV-2011-004617</CaseNumber></Message>"
); 
...