IBM WebSphereJax-WSRIフレームワーク。chunckHandlerがあります。1行のxml応答をクライアントに送信する必要があります。私はonelinexmlを作成します。デバッグすると、何が問題ないかがわかります-xmlは1行です。ただし、フレームワークを送信する前に、「きれいな印刷」出力を作成してください。署名に必要であり、xml変換は必要ありません。一般的な質問:SOAPHandlerで変換せずにxmlデータを送信する方法。
public class SignHandler implements SOAPHandler<SOAPMessageContext>{
private String makeOneLineXml(String xml) throws IOException{
BufferedReader br = new BufferedReader(new StringReader(xml));
String line=null;
StringBuilder sb = new StringBuilder();
while((line=br.readLine())!= null){
sb.append(line.trim());
}
return sb.toString();
}
public boolean handleMessage(SOAPMessageContext context) {
Boolean isRequest = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
//for response message only, true for outbound messages, false for inbound
if(isRequest){
try{
SOAPMessage soapMsg = context.getMessage();
SOAPEnvelope soapEnv = soapMsg.getSOAPPart().getEnvelope();
SOAPHeader soapHeader = soapEnv.getHeader();
Document orig = soapEnv.getOwnerDocument();
orig =
// I need send to client one-line-xml
XmlUtils.deserialize(makeOneLineXml(XmlUtils.serializeNode(signedSoap, false, false)));
soapMsg.saveChanges();
//tracking
soapMsg.writeTo(System.out); // In CONSOLE ALL ok. Xml is one line
}catch(SOAPException e){
System.err.println(e);
}catch(IOException e){
System.err.println(e);
}
}
//continue other handler chain
return true;
}