0

JSON 本文の代わりにパラメーターを使用して、サーバー API に POST したいと考えています。

私はこれを実装できます:

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();
                                }
                            }
                        });

http://someserver.com/transaction/<u_id>/<emp_id>/22.56/88.45/5/10/cash/initしかし、サーバーがパラメーターを処理する準備ができている場所にPOST することで、同じことを達成したいと考えています。

とにかく、Koushik Dutta (@koush) ライブラリは素晴らしく、非同期です。楽しかった。

4

1 に答える 1

1

それは可能ですが、リクエスト URL を手動で作成した場合に限ります。

POST リクエストのリクエスト データは、リクエスト ボディに入れる必要がありsetJsonObjectBody()ます。URL は、POST 要求が送信されるエンドポイントにすぎません。

アナロジー
Ifhttp://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 のスラッシュはエスケープする必要がある場合があることに注意してください。頭ではわからない。

于 2015-10-28T13:37:41.927 に答える