私のJavaサービスによって作成されるいくつかのオブジェクトをフィードする必要があるPHP SOAP Webサービスがあります。ウェブサービスxsd:文字列を<[!CDATA[]]>にエスケープする代わりに
だから、私はこのような何かを持っていると想像:
public class Foo {
private String attribute;
// getter/setter
}
...
Foo foo = new Foo();
foo.setAttribute("attr");
String serializedFoo = getJsonSerializer().toJson(foo);
// serialized foo {"attribute": "attr"}
webService.addNewFoo(serializedFoo);
...
問題は、Webサービスは、シリアライズこのようなfooの受信していることである:私はすべての私の引用符ことを発見し、私のネットワークを盗聴
{attribute: attr}
をはに刻まれています。のように。
{"attribute":"attr"}
私はそれを避ける方法はありますか? CDATAでラップした文字列を送付したいと思います。私はそれが引用符を失いたくない:/
私は私がWebサービスを呼び出すためのクライアントとマネージャーを生成する
wsimport -keep -Xnocompile WSDL_LOCATION
を使用しています。私はグラスフィッシュでサービスを実行しています。
EDIT 受信側は変更できません。私はそれがエスケープされた引用符を解析することができるはずだが、残念ながら私は私の側からシリアル化を変更できるだけです。
私はそれを理解していますが、残念ながら受信側を変更することはできません。代わりにCDATAを使用する方法はありますか? –
@RalfHoppen - 受信側がCDATAを正しく処理していることを示す印がありますか? – jtahlborn
はい、firefoxプラグイン、ポスター(https://addons.mozilla.org/en-US/firefox/addon/poster/)を使って試しました。それはCDATAの周りを包んでうまく働いた。 –