1

IrisCouch データベースで新しいドキュメントを作成しようとすると、常に次のエラーが発生します: {"error":"bad_request","re​​ason":"invalid_json"}

これは私の機能の関連部分です:

try {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpPost httpPost = new HttpPost("https://username.iriscouch.com:6984/mydb");
    StringEntity entity = new StringEntity(body);

    httpPost.setEntity(entity);
    httpPost.setHeader("Accept", "application/json");
    httpPost.setHeader("Content-type", "application/json");

    HttpResponse httpResponse = httpClient.execute(httpPost);
    System.out.println(httpResponse.toString()) ;
    HttpEntity httpEntity = httpResponse.getEntity();

    // Get the response
    BufferedReader rd = new BufferedReader(new InputStreamReader(httpEntity.getContent()));

    String line = "";
    while ((line = rd.readLine()) != null) {
        System.out.println(line);
    }

    System.out.println("body: " + body);
} catch (Exception e) {
    e.printStackTrace();
}

これが私の System.out の「本体」です。

{"bild1":"","bild2":"","bild3":"","bild4":"","bild5":"","bild6":"","bild7":"","bild8":"","bild9":"","bild10":"","name":"","plz":0,"ort":"","strasse":"","n_koordinate":0,"e_koordinate":0,"beschreibung":"","groesse":"< 50m²","sitzplaetze":"< 50","grillstellen":"1","reservierung":false,"res_name":"","res_tele":"","res_weiteres":"","wc":true,"behindi":false,"dach":true,"kinderfreundl":false,"auto":false,"kinderwagen":false,"einkauf":false,"datum":"2015-07-01-14:12:01:856","bewertung":0,"anz_bewertung":0}

JSON は有効です。jsonlint.com JSON Validator でテストしました。

どうすればいいですか?前もって感謝します!

4

1 に答える 1

0

おそらく、ユニコードの上付き文字 2 (²) が気になっているのでしょうか? この HttpPost がどのライブラリかはわかりませんが、HttpWebRequest によく似ているようです。ヘッダーを次のように設定してみてください。

httpPost.setHeader("Content-type", "application/json charset=utf-8");

また、HttpPost クラスが文字列を適切にエンコードしていない可能性もあります。(私は Visual Studio にこれを貼り付けていないので、暗所でのショットです)

于 2015-07-04T00:44:22.723 に答える