2012-01-23 4 views
8

Javaを使用してJSON形式のデータをサーバーに送信しようとしています。情報はサーバに届いていますが、サーバは「Bad Request」で応答しています。Java:プレビューHttpPostリクエスト

HttpPost httpost = new HttpPost(path); 

    StringEntity se = new StringEntity(JSONRequest); 

    //sets the post request as the resulting string 
    httpost.setEntity(se); 

    //sets a request header so the page receving the request will know what to do with it 
    httpost.setHeader("Accept", "application/json"); 
    httpost.setHeader("Content-type", "application/json;charset=utf8"); 
    HttpResponse response = httpclient.execute(httpost); 

これは私のリクエストの基本的な設定です。ここでJSONDataがある:これはあなたの多くに右に見える場合

{"clientApplicationDto":{"AuthenticationToken":"","BrandId":12,"MobileDeviceApplicationId":0},"mobileDeviceInfo":{"CarrierName":"MTN-SA","OsVersion":"2.2.2","ClientApplicationVersion":"TEST","DeviceManufacturer":"HTC","DeviceName":"HTC Desire","DeviceUniqueId":"1e9766fa2ef4c53a","OsName":"8","ClientApplicationTypeId":3}} 

、私は管理者をスパムから始めましょう、今のところ、私は私が何かをしないのですかどうかを知る必要があります。

+1

フムのために良いことだ、これを試してみてください、 'StringEntity'(というかどんな' AbstractHttpEntity'サブクラス)は、コンテンツ・タイプを持っている、それはデフォルトでに設定されます文字セットとして 'HTTP.DEFAULT_CONTENT_CHARSET'を使用して、' HTTP.PLAIN_TEXT_TYPE'定数を返します。代わりに 'se#setContentType(" application/json; charset = utf-8 ")'を呼び出すことによってContent-typeを設定することを検討してください。あなたのJSONは整形式のbtwに見えます。 – Jens

+0

ChromeのRESTコンソールのようなもので投稿やJavaコードに問題があるかどうかを確認するだけですか? https://chrome.google.com/webstore/detail/cokgbflfommojglbmbpenpphppikmonn – Dori

答えて

9

私は問題が...サーバは、コンテンツタイプヘッダとコンテンツフォーマット

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

と StringEntity SE = newに変更する必要が

httpost.setHeader("Content-type", "application/json;charset=utf8"); 

に非常に敏感であるましたStringEntity(JSONRequest); 1件のコメントが正しい方向に私をプッシュすることを

 StringEntity se = new StringEntity(JSONRequest,"utf-8"); 

おかげイェンスに変更する必要が

+0

ありがとう、あなたは私の一日を保存しました! –

+0

それがあなたを助けてくれてうれしい^ _ ^ – EZFrag

0

スタータ用...それはU

private static String sendRequestPost(String url, Object obj) { 
     try { 
      DefaultHttpClient httpClient = new DefaultHttpClient(); 

      HttpPost httpost = new HttpPost(url); 
      if (obj != null) { 
       httpost.setEntity(new StringEntity(new Gson().toJson(obj), "utf-8")); 
       System.out.println("Request Json => " + new Gson().toJson(obj)); 
      } 
      httpost.setHeader("Accept", "application/json"); 
      httpost.setHeader("Content-type", "application/json; charset=utf8"); 

      HttpResponse response = httpClient.execute(httpost); 

      HttpEntity responseEntity = response.getEntity(); 
      String strResponse = EntityUtils.toString(responseEntity); 
      return strResponse; 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
      return e.toString(); 
     } 

    } 
関連する問題