1
を使用して要求の文字列パラメータにCDATAを私はCXFはJAX-WS
要求にganerated JAX-WSクライアントがXMLを含む文字列パラメータ(MGRequest)を持っている、すべての作業者が、生成された要求がされて追加します
<S:Body>
<ns5:MGRequest><![CDATA[<mytag>hello</mytag>]]></ns5:MGRequest>
</S:Body>
(私は、サーバーを制御することはできませんので...)
:私のような体を生成する必要が<S:Body>
<ns5:MGRequest><mytag>hello</mytag></ns5:MGRequest>
</S:Body>
:このような
クライアントは、標準のJAX-WSのようなものです:
@WebService(name = "ServiceSoap")
@XmlSeeAlso({ ObjectFactory.class})
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface ServiceSoap {
@WebMethod(operationName = "ProcessMessage")
@WebResult(name = "MGResponse")
public String processMessage(
@WebParam(partName = "input", name = "MGRequest") String input);
}
、私は次のように呼び出す:
Service client = new Service(url);
client.setHandlerResolver(HandlerFactory.build(new LoggerHandler()));
ServiceSoap service = client.getServiceSoap();
String msgToSend = JaxbUtil.jaxbObjToString(xmlObj, false);
String response = service.processMessage(msgToSend);
私は@WebParam
前@XmlJavaTypeAdapter(CDataAdapter.class)
を追加しようとしたが、結果はでした:
<S:Body>
<ns5:MGRequest><![CDATA[<mytag>hello</mytag>]]></ns5:MGRequest>
</S:Body>
ここでCDataAdapter:
public class CDataAdapter extends XmlAdapter<String, String> {
@Override
public String marshal(String v) throws Exception {
return "<![CDATA[" + v + "]]>";
}
@Override
public String unmarshal(String v) throws Exception {
return v;
}
}
これをアーカイブする方法はありますか? おかげ
作業の夜の後
上記の解決策を適用するには、「message.saveChanges();」を追加する必要があります。 in handleMessageメッセージ関数。 https://www.mkyong.com/webservices/jax-ws/jax-ws-soap-handler-in-client-side/を参照してください。 –