Как отправить массив в параметрах в быстрой сетевой библиотеке Android

Я использую Fast-Android-Networking и хочу отправлять данные на сервер, который содержит строки и массивы. Можно отправить строку, но я не могу отправить массив, а не список массивов. Это простой массив. У меня есть поиск другого решения, но все они касаются залпа. кто-нибудь может помочь? Пожалуйста, не отмечайте дубликаты. Последние 5 параметров являются массивами. Я попробовал это как String.valueOf(ReadQuran), но это тоже не сработало.

Мой код:

 AndroidNetworking.post(Api.ROOT_URL +"api/stageFiveFormData")
            .addBodyParameter("mto_id",idu)
            .addBodyParameter("school_id", scholid)
            .addBodyParameter("person_name", personnameS)
            .addBodyParameter("designation", designantionS)
            .addBodyParameter("cell_number",personcellS)
            .addBodyParameter("email",emailpersonS)
            .addBodyParameter("whatsapp_number",whatsApppersonS)
            .addBodyParameter("school_name",schoolNameS)
            .addBodyParameter("postal_address",postalAdressS)
            .addBodyParameter("city",cityS)
            .addBodyParameter("tehsil",tehsilS)
            .addBodyParameter("district",districtS)
            .addBodyParameter("s_primary", priamryChecked)
            .addBodyParameter("s_middle", middleChecked)
            .addBodyParameter("s_high", highChecked)
            .addBodyParameter("s_higher", hsChecked)
            .addBodyParameter("principal_name", nameOfPrincipalS)
            .addBodyParameter("p_contact_num",cellNoPrincipalS)
            .addBodyParameter("p_email",emailPrincipalS)
            .addBodyParameter("p_whatsapp_number",whatsAppPrincipalS)
            .addBodyParameter("class", Class)
            .addBodyParameter("rq_book", String.valueOf(ReadQuran))
            .addBodyParameter("rqb_qty", String.valueOf(ReadQuranQty))
            .addBodyParameter("fq_book", String.valueOf(FehamQuran))
            .addBodyParameter("fqb_qty", String.valueOf(FehamQuranQty))




            .setPriority(Priority.HIGH)
            .build()
            .getAsString(new StringRequestListener() {
                public void onResponse(String response) {
                    try {
                        JSONArray jsonArray = new JSONArray(response);
                        JSONObject jsonObject = jsonArray.getJSONObject(0);
                        String result = jsonObject.getString("result");
                        String message = jsonObject.getString("message");


                        if (result.equalsIgnoreCase("success")) {
                            Toast.makeText(FormStage5.this, "" + message, Toast.LENGTH_SHORT).show();
                            Intent intent = new Intent(FormStage5.this, formstage2submittedmsg.class);
                            startActivity(intent);


                            pDialog.dismiss();
                        } else/* (result.equalsIgnoreCase("0"))*/ {
                            Toast.makeText(FormStage5.this, ""+message, Toast.LENGTH_SHORT).show();
                            pDialog.dismiss();
                        }

                    } catch (JSONException e) {
                        pDialog.dismiss();
                        Toast.makeText(FormStage5.this, "Something Went Wrong , Try Again", Toast.LENGTH_SHORT).show();
                    }

                }


                @Override
                public void onError(ANError anError) {
                    Toast.makeText(FormStage5.this, "Please Check Your Internet Connection" + anError.toString(), Toast.LENGTH_LONG).show();
                    pDialog.hide();
                }
            });
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 454
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

передать arrayname.toString() как значение

Ответ принят как подходящий

Лучший способ — создать класс POJO и установить значение массива, а затем передать его. Он автоматически преобразуется в JSON, если вы используете модернизацию с помощью GSON Converter factory.

В принятом ответе на этот вопрос говорится о модернизации и GSON, а вопрос касается быстрой работы в сети Android. Принятый ответ не сработал для меня.

Я обнаружил, что единственный способ сделать это — построить тело самостоятельно и добавить его в запрос с помощью .addJSONObjectBody.

Я хотел тело, которое выглядит как:

{
    "roles": [
        "customer-admin"
    ]
}

Последний способ, который я нашел, который работает:

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

JSONObject roles;
try {
    roles = new JSONObject();
    JSONArray rolesArr = new JSONArray();
    rolesArr.put("customer-admin");
    roles.put("roles", rolesArr);
} catch (JSONException e) {
    // Make error toast here
    return;
}
            
AndroidNetworking.post(url)
    .addJSONObjectBody(roles)
    .build()

как насчет JSONArray? { "роли": "клиент-администратор", "id": "1" }

Yogi Arif Widodo 08.11.2021 14:02

Другие вопросы по теме