簡體   English   中英

將字符串數組傳遞給 POST URL java android

[英]Passing String array to POST URL java android

我正在創建一個具有多項選擇的應用程序。 在按鈕上單擊選中的選項應該發送到服務器並連續插入每個選項。如何將選擇傳遞給我的服務器? 截圖1 截圖2 截圖2

private void add_scouting
            (final String pest,final String chem,final String remarks) {
        // Tag used to cancel the request
        String tag_string_collect = "Add_scouting";

        pDialog.setMessage("Add Scouting ...");
        showDialog();

        StringRequest strReq = new StringRequest(Request.Method.POST,
                AppConfig.URL_ADDPLANTING, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                Log.d(TAG, "Scouting Response: " + response.toString());
                hideDialog();

                try {
                    JSONObject jObj = new JSONObject(response);
                    boolean error = jObj.getBoolean("error");
                    if (!error) {

                        Toast.makeText(planting.this, "Scouting Added successfully.", Toast.LENGTH_LONG).show();


                    } else {

                        // Error occurred in registration. Get the error
                        // message
                        String errorMsg = jObj.getString("error_msg");
                        Toast.makeText(planting.this,
                                errorMsg, Toast.LENGTH_LONG).show();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, "AddPlanting Error: " + error.getMessage());
//                Toast.makeText(getContext(),
//                        error.getMessage(), Toast.LENGTH_LONG).show();
                hideDialog();
            }
        }) {

            @Override
            protected Map<String, String> getParams() {
                // Posting params to register url
                Map<String, String> params = new HashMap<String, String>();

                params.put("bcode",pest);

                return params;
            }

        };

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(strReq, tag_string_collect);
    }
    private void showDialog() {
        if (!pDialog.isShowing())
            pDialog.show();
    }

    private void hideDialog() {
        if (pDialog.isShowing())
            pDialog.dismiss();
    }

1) 在應用程序的 build.gradle 中實現此依賴項

implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.squareup.retrofit2:converter-gson:2.1.0'

2) 創建 APIClient.java class 並將此代碼放入該 class 中:

import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class APIClient {
    private static Retrofit retrofit = null;

    public static OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .readTimeout(180, TimeUnit.SECONDS)
            .writeTimeout(180,TimeUnit.SECONDS)
            .connectTimeout(180, TimeUnit.SECONDS)
            .build();

    public static Retrofit getClient() {
        return new Retrofit.Builder()
                .baseUrl("http://BASE_URL_HERE/")
                .addConverterFactory(GsonConverterFactory.create())
                .client(okHttpClient)
                .build();
    }
}

BASE URL 是您的服務器主機名。 例如,您有 api。 所有 api 都以http://localhost:8080/api/開頭。 這將是 BASE URL。 因為所有 api 都以 url 開頭。

3) 創建 ApiInterface.java 接口文件並將此代碼插入該文件:

import java.util.ArrayList;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.POST;
import retrofit2.http.PUT;
import retrofit2.http.Path;
import retrofit2.http.Query;

public interface ApiInterface {
    @POST("insert-multiple-selection")
    Call<YOUR_RESPONSE_CLASS> acceptOrder(@Body ArrayList<String> selections);
}

4)將此代碼添加到您的按鈕 onclick 方法:

ApiInterface apiInterface= APIClient.getClient().create(ApiInterface.class);
        ArrayList<String> selections=new ArrayList<>();
        // To add value
        selections.add("YOUR_VALUE_1");
        selections.add("YOUR_VALUE_2");
        selections.add("YOUR_VALUE_3");
        // To remove value
        selections.remove("YOUR_VALUE_1");
        Call<YOUR_RESPONSE_CLASS> call=apiInterface.sendSelections(selections);
        call.enqueue(new Callback<YOUR_RESPONSE_CLASS>() {
            @Override
            public void onResponse(Call<YOUR_RESPONSE_CLASS> call, Response<YOUR_RESPONSE_CLASS> response) {
         

               if(response.isSuccessful()){
                   Toast.makeText(context, "Successfully sent!", Toast.LENGTH_SHORT).show();
                } else {
                   Toast.makeText(context, "Error code: "+response.code(), Toast.LENGTH_SHORT).show();
               }
                
            }

            @Override
            public void onFailure(Call<YOUR_RESPONSE_CLASS> call, Throwable t) {
              Toast.makeText(context, t.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM