2017-06-13 11 views
-1

私はPOSTメソッドのリクエストボディに "/" 文字を送った際に不正な要求を取得取得HTTP/1.1 400不正な要求[ r]を[ nを]

HttpClient client = new HttpClient(); 
    PostMethod postMethod = new PostMethod(kairosDBUrl); 

    RequestEntity requestEntity = null; 

    try { 
     requestEntity = new StringRequestEntity(inputBody, "text/json", "UTF-8"); 
     postMethod.setRequestEntity(requestEntity); 
     client.executeMethod(postMethod); 
     responseBody = IOUtils.toString(postMethod.getResponseBodyAsStream(), postMethod.getResponseCharSet()); 
    } catch (IOException e) { 
     LOG.error("Unexpected exception : {}", e); 
    } finally{ 
     postMethod.releaseConnection(); 
    } 

入力:

{metrics=[{name=apache.Activity_Bytes/req, tags={host=[ip-10-0-0-201]}, aggregators=[{name=avg, align_sampling=true, sampling={value=5, unit=seconds}}]}], cache_time=0, start_absolute=1496222264000, end_absolute=1496224064000} 

エラー:

"{"errors":["com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 39"]}" 
+0

これは単なる野生の推測ですが、スラッシュをその前にバックスラッシュでエスケープしようとしましたか? – Jonathan

+1

JSONが無効です。修正する必要があります。 – Dorian

+0

JSONは完全にうんざりです。あなたの入力を修正するにはhttp://json-validator.com/を試してください。 –

答えて

0

通常、メソッドが処理できないものでメソッドを呼び出そうとしているときに、「Bad Request」ステータスが出ます。あなたは.jsonファイルを修正する必要があることを示しています。この例外

["com.google.gson.stream.MalformedJsonException: Unterminated object at line 1 column 39"] 

を取得する。この場合

。 あなたのJsonファイルの構造がエンティティの構造と一致するかどうかを確認することをお勧めします。

+0

"/"文字を付けずに同じ入力jsonで試しました。私も応答があります。 –

+1

@ madhukarreddy "/"が(あなたの完全に無効なJSONではなく)あなたの問題の根本原因だと思いますか? –

+0

エラー1と39のエラーを表示します。["com.google.gson.stream.MalformedJsonException:行1の列39の終了していないオブジェクト"] –

0

誤って私はjson.toString()を使用するはずですが、無効なStringを返すmap.toString()を使用しました。

map.toString()は特殊文字がないときに機能しますが、特殊文字があるときには機能しませんでした。

関連する問題