19

ポストコールを実行して、この値で入力を渡そうとしました - 「ä€愛لآहที่」エラーメッセージが表示されました

{"error":{"code":"","message":{"lang":"en-US","value":{"type":"ODataInputError","message":"Bad Input: Invalid JSON format"}}}}

これは私のコードです

    conn.setRequestMethod(ConnectionMethod.POST.toString());
    conn.setRequestProperty(CONTENT_LENGTH, Integer.toString(content.getBytes().length));
    conn.setRequestProperty("Accept-Charset", "UTF-8"); 
    conn.setUseCaches(false);
    conn.setDoInput(true);
    conn.setDoOutput(true);
    DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
    wr.writeBytes(content);
    wr.flush();
    wr.close();
    InputStream resultContentIS;
    String resultContent;
    try {
        resultContentIS = conn.getInputStream();

        BufferedReader reader = new BufferedReader(new InputStreamReader(resultContentIS));
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            sb.append(line);
        }

conn.getInputStream(); で失敗しました。

コンテンツの価値は

{ "input" : "ä€愛لآहที่" }

入力が文字列または整数の場合に機能しています

私が声明を追加したとき

   conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); 

違うメッセージが来ました

 {"error":{"code":"","message":{"lang":"en-US","value":{"type":"Error","message":"Internal server error"}}}}
4

3 に答える 3

3

必要なエンコーディングに注意を払わずに文字列を変換した可能性があるため、変数コンテンツには既に間違ったデータが含まれているようです。

ライターで正しいエンコンディングを設定し、write()代わりに使用するwriteBytes()ことは、試してみる価値があります。

于 2013-09-12T08:41:39.007 に答える