2012-01-10 4 views
0

私の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} 

をはに刻まれています。のように。

{&quot;attribute&quot;:&quot;attr&quot;} 

私はそれを避ける方法はありますか? CDATAでラップした文字列を送付したいと思います。私はそれが引用符を失いたくない:/

私は私がWebサービスを呼び出すためのクライアントとマネージャーを生成する

wsimport -keep -Xnocompile WSDL_LOCATION 

を使用しています。私はグラスフィッシュでサービスを実行しています。

EDIT 受信側は変更できません。私はそれがエスケープされた引用符を解析することができるはずだが、残念ながら私は私の側からシリアル化を変更できるだけです。

答えて

1

CDATAを使用することは、探している解決策ではありません。 &quot;は、文字通りの引用符を送信するのにうまく動作するはずです。受信側の何かがXMLを正しく解析していません。

+0

私はそれを理解していますが、残念ながら受信側を変更することはできません。代わりにCDATAを使用する方法はありますか? –

+0

@RalfHoppen - 受信側がCDATAを正しく処理していることを示す印がありますか? – jtahlborn

+0

はい、firefoxプラグイン、ポスター(https://addons.mozilla.org/en-US/firefox/addon/poster/)を使って試しました。それはCDATAの周りを包んでうまく働いた。 –

関連する問題