2015-09-26 53 views
0

我想使用參數而不是JSON主體將POST發佈到我的服務器API。Ion POST作爲url參數而不是JSON主體Android

我可以實現這一點:

JsonObject json = new JsonObject(); 
       json.addProperty("u_id", "XXX"); 
       json.addProperty("emp_id", "XXX"); 
       json.addProperty("lat", Double.toString(lat)); 
       json.addProperty("lon", Double.toString(lon)); 
       json.addProperty("paper", "5"); 
       json.addProperty("plastic", "10"); 
       json.addProperty("mode", "cash"); 
       json.addProperty("status", "init"); 

       Ion.with(getApplicationContext()) 
         .load(getString(R.string.url)+"/transaction") 
         .setJsonObjectBody(json) 
         .asJsonObject() 
         .setCallback(new FutureCallback<JsonObject>() { 
          @Override 
          public void onCompleted(Exception e, JsonObject result) { 
           if (e != null) { 
            Toast.makeText(getBaseContext(), "Data : " + e.getStackTrace(), Toast.LENGTH_LONG).show(); 
           } else { 
            runOnUiThread(new Runnable() { 
             @Override 
             public void run() { 
              progress.dismiss(); 
             } 
            }); 
            Toast.makeText(getBaseContext(), "Pickup added successfully! We will contact you soon.", Toast.LENGTH_LONG).show(); 
           } 
          } 
         }); 

但我想實現由POST同荷蘭國際集團以http://someserver.com/transaction/<u_id>/<emp_id>/22.56/88.45/5/10/cash/init在我的服務器已準備好處理的參數。

無論如何,Koushik Dutta(@koush)這個圖書館是美好而異步的。愛它。

回答

1

這是可能的,但只有當你手動構建請求url。

POST請求的請求數據應該放在請求正文中,使用setJsonObjectBody()完成。該url僅僅是發送POST請求的端點。

比喻
如果http://someserver.com/transaction是你住在這個城市的名字,/<u_id>/<emp_id>/22.56/88.45/5/10/cash/init是你家的地址,json是傳遞到你家的包。

您可以指定包裹應發送到的地址,但不要將有關包裹內容的信息放在地址標籤上。這些是2種不同類型的數據,應該區別對待。

因此,你應該做這樣的事情

JsonObject json = new JsonObject(); 
json.addProperty("lat", Double.toString(lat)); 
json.addProperty("lon", Double.toString(lon)); 
json.addProperty("paper", "5"); 
json.addProperty("plastic", "10"); 
json.addProperty("mode", "cash"); 
json.addProperty("status", "init"); 

String u_id = "XXX"; 
String emp_id = "XXX"; 
String url = getString(R.string.url) + "/transaction/" + u_id + "/" + 
      emp_id + "/22.56/88.45/5/10/cash/init"; 

Ion.with(getApplicationContext()) 
     .load(url) 
     .setJsonObjectBody(json) 
     .asJsonObject() 
     .setCallback(new FutureCallback<JsonObject>() { 
      @Override 
      public void onCompleted(Exception e, JsonObject result) { 

      } 
     }); 

注意,在URL中斜槓可能需要進行轉義。不知道從我的頭頂上。

+0

我已經修好了。無論如何感謝您的答案。 –

相關問題