2015-09-26 63 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

我已经修好了。无论如何感谢您的答案。 –

相关问题