0

ジャージーを使用して Java REST サーバーから JSON 形式の文字列を送受信する Web サイトがあります。HTMLタグ付きのjsonオブジェクトを受信しようとするまで、すべて正常に動作します。

Java サーバーの println は、このデータが送信されたことを示しています。

data sent: {"text": "Wij zijn Pixel Apps, ook wel bekend als Groep 6.<br />
Samen met onze 6 groepsleden verzorgen wij het reilen en zijlen op Ford Lommel Proving  Grounds.<br />
<br />
<b>Korte inleiding</b><br />
<p>Onze taak bestaat er uit een functionele applicatie te maken binnen Windows 8. De app bestaat er uit de chauffeurs te begeleiden op hun testritten.<br />De chauffeurs worden onder andere geholpen bij het bekijken van hun routineplan, het bijhouden van notities en het overzetten van de resultaten naar het hoofdgebouw.</p>
<b>Bijkomende hoort natuurlijk het onderhouden van deze website.</b>
<p>Zoals u kan zien vind u hierboven het navigatiemenu.<br />
Voor meer informatie over ons project kan u terecht bij <i>Over ons</i><br />
Wenst u contact op te nemen? U kan zich wenden naar het tabblad <i>Contact</i><br />
Indien u meer over de individuele groepsleden wil weten kan u terecht bij <i>Leden</i><br />
Als u meer informatie wenst over ons project, gelieve contact op te nemen met ons en wij verzorgen uw verzoek.</p>
<b>Happy browsing!</b>"}

これは基本的に、1 つの変数「テキスト」とコンテンツとして HTML 形式のコンテンツを含む単純な json です。私は自分の問題をグーグルで検索しましたが、これはうまくいくはずです。

コンテンツにhtmlタグを含むjsonを送信できない私のJava GETメソッドは次のとおりです。

@GET
@Path("gettext")
@Produces("application/json")
public String getJson(@QueryParam("id") String id, @QueryParam("taalcode") String taalcode) {
    Connectie c  = new Connectie();
    try
    {
        c.openConnectie();
        String content = c.getCms(id, taalcode);
        if (content == null || content.equals("")) {
            content = "{ \"text\" : \"Geen tekst gevonden.\" }";
        }
        System.out.println("data send: "+content);
        return content;
    }
    catch(Exception e)
    {
        System.out.println("data send: { \"text\" : \"Server error, sorry.\" }");
        return "{ \"text\" : \"Server error, sorry.\" }";
    }
}

私の put メソッドは、コンテンツに html タグを含む json を正常に受け取ります。PHP で json オブジェクトを受け取る方法は次のとおりです (これは、html タグが存在しない場合でも機能します)。

public function getCMS($id) {
    $taalcode = '';
    if($this->session->userdata('language') == 'nederlands') {
        $taalcode = 'NL';
    } else {
        $taalcode = 'EN';
    }
    $curl_instance = curl_init();
    curl_setopt($curl_instance, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl_instance, CURLOPT_URL, 'http://192.168.0.251:8084/Groep1/webresources/cmspost/gettext?id='.$id.'&taalcode='.$taalcode);

    try {
        $data = json_decode(curl_exec($curl_instance), true);
        if ($data == null) {
            $data['text'] = "Altough I set a string in my java get method if it's null, this message is always printed";
        }
        return $data;
    } catch (HttpException $ex) {
        $data['text'] = $ex;
        return $data;
    }
}

PHP ではif ($data == null)、文字列を送信する前に null のように見える場合、GET メソッドで手動で文字列を設定しても、常に true であるかをテストします。

私は何を間違っていますか?

4

1 に答える 1

3

問題は HTML にはありません。問題は、JSON が複数行の文字列を許可しないことです。改行を削除すると、JSON は正常に機能します。

この種の問題に対処するため、JSON を自分で作成するのではなく、JSON ライブラリを使用して JSON を構築する必要があることに注意してください。

于 2013-11-04T13:20:21.780 に答える