2016-05-17 26 views
0

私は、retrofitを使用してjsonオブジェクトを投稿したいと考えました。 私は、次のインターフェイス作成しました:retrofitを使用してjsonオブジェクトを投稿する方法

public interface syncinter { 

@POST("url") 
void sync_data(@Body JSONObject ordObj, Callback<JsonObject> callback); 

} 

に私はそれを投稿したい、次のデータを。

final JSONObject ordJsonObj = new JSONObject(); 
    JSONArray ordJsonArray = new JSONArray(); 
    try { 
     ordJsonObj.put("Order_Nos",mOrdArr.size()); 

     for (int i=0; i<mOrdArr.size();i++) { 

      JSONObject ordObj = new JSONObject(); 
      ordObj.put("Order_No",mOrdArr.get(i).getorderID()); 
      ordObj.put("Order_Date",mOrdArr.get(i).getorderDate()); 
      ordObj.put("Customer_id",mOrdArr.get(i).getCustPKID()); 

      Customer aCust = db.getEmployee(mOrdArr.get(i).getCustPKID()); 
      ordObj.put("Cust_name",aCust.getEmpName());// query DB 
      ordObj.put("Company_id",sharedpreferences.getString(OrderApplication.CompanyID,"")); // sharedP 
      ordObj.put("Device_Ref",mOrdArr.get(i).getOrdPKID());// sharedP 
      ordObj.put("User_ID",sharedpreferences.getString(OrderApplication.UserID,""));// sharedP 

      JSONArray prodJsonArray = new JSONArray(); 
      ArrayList<Product> mProdArr = db.getAllProductOrder(mOrdArr.get(i).getorderID()); 

      for (int j=0; j<mProdArr.size();j++) { 

       JSONObject prodObj = new JSONObject(); 
       prodObj.put("Product_id",mProdArr.get(j).getPrID()); 
       prodObj.put("Product_name",mProdArr.get(j).getprName()); 
       prodObj.put("Product_Brand",mProdArr.get(j).getBrandName()); 
       prodObj.put("Qty",mProdArr.get(j).getPrQty()); 
       prodObj.put("Rate",(Double.parseDouble(mProdArr.get(j).getPrAmt()+"")/ mProdArr.get(j).getPrQty())); 
       prodObj.put("Total_Amount",(Double.parseDouble(mProdArr.get(j).getPrAmt()+""))); 
       prodJsonArray.put(j, prodObj); 
      } 
      ordObj.put("OrderDetails",prodJsonArray); 

      ordJsonArray.put(i,ordObj); 
     } 
     ordJsonObj.put("Orders",ordJsonArray); 

     Log.d("response", "" + ordJsonObj.toString()); 

私はJSONオブジェクトを投稿するには、次の改造コードを書かれているが、この次のコードで、私は

失敗を取得しています - >エラー:400不正な要求。

RestAdapter adapter = new RestAdapter.Builder() 
        .setEndpoint(OrderApplication.getBase_URL) 
        .build(); 

      //Creating object for our interface 
      syncinter api = adapter.create(syncinter.class); 


      api.sync_data(ordJsonObj, new Callback<JsonObject>() { 
       @Override 
       public void success(JsonObject jsonObject, retrofit.client.Response response) { 

       } 



       @Override 
       public void failure(RetrofitError error) { 
        Log.d("ERROR", String.valueOf(error)); 
        Toast.makeText(getActivity(),"Order failed to place on Server",Toast.LENGTH_LONG).show(); 
       } 
      }); 
+0

なぜ要求が受け入れられなかったのか – Henry

+0

@Henryは私のコードは正しいですか? –

+0

少なくともサーバーに何かを送信します。あなたが同意したリクエストが正しいのかどうかはわかりませんが、サーバがそれを受け入れなかったためではないでしょう。 – Henry

答えて

0

私はTypedInputを使用してそれを投稿することができた私は

@PUT(ServerEndPoint) 
    void callApi(@Body TypedInput input, Callback<Response> response); 

下に示すように、APIを宣言し、相対的な重要性のこの

TypedInput input = null; 
     try { 
      JSONObject obj = new JSONObject(); 
      obj.put("KEY", "value"); 
      input = new TypedByteArray("application/json", obj.toString().getBytes("UTF-8")); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     callApi(input, new Callback<Response>() { 
      @Override 
      public void success(Response response, Response response2) { 
      } 

      @Override 
      public void failure(RetrofitError error) {    
      } 
     }); 

ないようなJSONオブジェクトを送信改造を使用して1.9

+0

私はこれを試しましたが、405メソッドが許可されていません。私はPOSTを使用しています –

+0

入力を入力してコードを投稿 –

+0

コードがあなたを助けてくれてありがとう –

関連する問題