Ion POST 作为 url 参数而不是 JSON body Android
Ion POST as url parameters and not JSON body Android
我想 POST 到我的服务器 API 使用参数而不是 JSON 正文。
我可以实现这个:
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 ing 到 http://someserver.com/transaction/<u_id>/<emp_id>/22.56/88.45/5/10/cash/init
来实现相同的目的,我的服务器已准备好处理参数。
无论如何,Koushik Dutta (@koush) 这个库很棒而且是异步的。喜欢它。
这是可能的,但前提是您手动构造请求 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 中的斜杠可能需要转义。不知道从我的头顶。
我想 POST 到我的服务器 API 使用参数而不是 JSON 正文。
我可以实现这个:
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 ing 到 http://someserver.com/transaction/<u_id>/<emp_id>/22.56/88.45/5/10/cash/init
来实现相同的目的,我的服务器已准备好处理参数。
无论如何,Koushik Dutta (@koush) 这个库很棒而且是异步的。喜欢它。
这是可能的,但前提是您手动构造请求 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 中的斜杠可能需要转义。不知道从我的头顶。