[英]Passing String array to POST URL java android
我正在創建一個具有多項選擇的應用程序。 在按鈕上單擊選中的選項應該發送到服務器並連續插入每個選項。如何將選擇傳遞給我的服務器?
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.