简体   繁体   English

如何使用改造2在android中的数组中发布数据

[英]how to Post data in an array in android using retrofit 2

i am facing a problem regarding posting data in an array in android using retrofit 2. i have to post the data of nearly 14 fields in my profile setting activity ... Like this ... 我面临有关使用翻新2在android系统中将数据发布到数组中的问题。我必须在个人资料设置活动中发布近14个字段的数据...像这样...

name="basics[first_name] , name="basics[last_name]" , name="basics[phone_number]"

i have to send data in this format. 我必须以这种格式发送数据。 i am not understanding how to do it need help.i am not understanding how to make Call of the api in the interface because i have to put data in an array. 我不知道该怎么做需要帮助。我不了解如何在接口中调用api,因为我必须将数据放入数组中。 Currently i am doing it like this but i know its not right... 目前我正在这样做,但我知道它不正确...

@FormUrlEncoded
    @POST("profile_setting/basic_setting")
    Call<ResponseBody> UpdateBasics(
            @Query("user_id") int user_id ,
            @Field("nickname") String nickname ,
            @Field("first_name") String  first_name ,
            @Field("last_name") String last_name ,
            @Field("phone_number") String phone_number ,
            @Field("fax") String fax
    );

Do this way to send Json Object as request parameters using Retrofit 2 这种方式使用Retrofit 2Json Object作为请求参数发送

    @Headers("Content-Type: application/json")
    @POST("profile_setting/basic_setting")
    Call<ResponseBody> UpdateBasics(@Body String body);

This is how you would use the above method to send json object 这就是您使用上述方法发送json对象的方式

try {
                    JSONObject paramObject = new JSONObject();
                    paramObject.put(value_one, "field_one"));
                    paramObject.put(value_second, "field_second"));
                    Call<ResponseBody> userCall = apiInterface.UpdateBasics(paramObject.toString());
                    userCall.enqueue(new Callback<ResponseBody>() {
                        @Override
                        public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                            //handle your result here

                        }

                        @Override
                        public void onFailure(Call<LoginResponse> call, Throwable t) {
                           //handle failure
                        }
                    });
                } catch (JSONException e) {
                    e.printStackTrace();
                }

Make a class 上课

public class Basic {
  public final int user_id;
  public final String nickname;
  ....

  public Basic(int user_id, ...) {

  }
}

Then pass list of objects of this class to this interface 然后将此类的对象列表传递到此接口

public interface MyService {
  @POST("/basic")
  Response void sendData(@Body List<Basic> basic);
}

Or you can do the same with JSONObject. 或者,您也可以使用JSONObject进行相同的操作。 Just make a list of jsonobjects 只需列出jsonobjects

JSONObject paramObject = new JSONObject();
                    paramObject.put(value_one, "field_one"));
                    paramObject.put(value_second, "field_second"));

put the objects in a list 将对象放在列表中

list.add(paramObject);

then pass to the retrofit 然后通过改造

public interface MyService {
  @POST("/basic")
  Response void sendJsonObjectData(@Body List<JSONObject> basic);
}

You can follow this was. 您可以按照以下进行操作。 (posting how i've done that) (发布我如何做到这一点)

@POST("Users.json")
Call<UploadData> uploadToken(@Body UploadData uploadData);

UploadData.class UploadData.class

public class UploadData {

private String DeviceToken, DeviceIMEI;

public UploadData(String deviceToken, String deviceIMEI) {
    DeviceToken = deviceToken;
    DeviceIMEI = deviceIMEI;
}

public String getDeviceToken() {
    return DeviceToken;
}

public String getDeviceIMEI() {
    return DeviceIMEI;
}
}

Then in your Activity 然后在您的活动中

private void uploadToken() {
     ApiInterface apiInterface = ApiClient.getClient().create(ApiInterface.class);
     UploadData uploadToken = new UploadData(deviceToken, imei);
     final Call<UploadData> callUpload = apiInterface.uploadToken(uploadToken);

callUpload.enqueue(new Callback<UploadData>() {
        @Override
        public void onResponse(Call<UploadData> call, Response<UploadData> response) {
             if (response.isSuccessful()) {
                Toasty.success(Main.this, "Token Uploaded !! ", Toast.LENGTH_LONG).show();
              }
      }

       @Override
       public void onFailure (Call < UploadData > call, Throwable t){
              call.cancel();
              Toasty.error(Main.this, "Error: " + t.getLocalizedMessage(),Toast.LENGTH_SHORT).show();
        }
    });

 }

Android Retrofit 2 - 发送数组时出现问题<object>使用 POST<div id="text_translate"><p> 我是 retrofit 的新手,现在,当我知道如何在没有任何对象的情况下发送普通数据时,仅使用参数或简单的主体我想知道如何发送对象......我花了大约 20 小时来调试它,我很困惑因为我不知道该怎么做...有我的代码:</p><p> API 接口:</p><pre> @POST("/api/assortment") Call<PostAssortment> getAssortment(@Body String PostShipmentProgress);</pre><p> 邮政分类 class:</p><pre> public class PostAssortment { private String JSON; @SerializedName("token") @Expose private String token; @SerializedName("assortment") @Expose private Assortment assortment; @SerializedName("tokens") @Expose private List<String> tokens; @SerializedName("positions") @Expose private List<Position> positions; @SerializedName("deviceId") @Expose private String deviceId; public String getToken() { return token; } public void setToken(String token) { this.token = token; } public Shipment getAssortment() { return assortment; } public void setAssortment(Assortment assortment) { this.assortment = assortment; } public List<String> getTokens() { return tokens; } public void setTokens(List<String> tokens) { this.tokens = tokens; } public List<Position> getPositions() { return positions; } public void setPositions(List<Position> positions) { this.positions = positions; } public String getDeviceId() { return deviceId; } public void setDeviceId(String deviceId) { this.deviceId = deviceId; } public String getJSON() { return JSON; } public void setJSON(String JSON) { this.JSON = JSON; } }</pre><p> 和 mainJava class:</p><pre> Gson gson = new Gson(); PostAssortment postAssortment= new PostAssortment(); List<String> tokens = new ArrayList<>(); tokens.add("someToken"); postAssortment.setTokens(tokens); postAssortment.setDeviceId("aaaaa"); List<Position> currentPosition = new ArrayList<>(); Position cp = new Position(); cp.setItemName("Some"); cp.setPlace("POLAND"); cp.setTimestamp("2020-12-09T11:00:00"); currentPosition.add(cp); postAssortment.setPositions(currentPosition); String postAssortmentJSON = gson.toJson(postAssortment); Call<PostAssortment> call = ApiLoginInterface.getAssortment(postAssortmentJSON); call.enqueue(new Callback<PostAssortment>() { @Override public void onResponse(Call<PostAssortment> call, Response<PostAssortment> response) { PostAssortment assortmentResponse = response.body(); } @Override public void onFailure(Call<PostAssortment> call, Throwable t) { Log.d("FAILURE", "onFailure: " + t.getMessage()); } }); }</pre><p> 还有我的 retrofit onCreate:</p><pre> Gson gson = new GsonBuilder().setLenient().create(); String BASE_URL = getString(API_URL); Retrofit retrofit = new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create(gson)).build(); ApiLoginInterface = retrofit.create(ApiLoginInterface.class);</pre><p> 在我尝试调用它之后,我没有得到任何调用排队的点</p><pre>Android: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference</pre><p> 错误......有人可以描述这个并帮助我让它工作吗? :/</p></div></object> - Android Retrofit 2 - problem with sending the Array<Object> using POST

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用Android中的改造将数据发布到数组中 - Post data in an array using retrofit in android 如何在Android中使用改造在Json响应中获取数组数据? - How to get array data in Json response using retrofit in android? 如何使用 Retrofit 2 发布 JSON 数组 - How to Post JSON array using Retrofit 2 使用Android中的2d数组发送多个图像以使用改造将数据发布到服务器 - Send multiple images using 2d Array in android to post data to server using retrofit 如何使用Retrofit2发布数据? - How to POST data using Retrofit2? 如何使用 Android 中的 retrofit 在单个 POST 方法中发布文本数据、单个图像和多个图像? - How to post text data, single image and multiple image in single POST method using retrofit in Android? 在Android中使用Retrofit 2发布数据不起作用 - Post Data in Android with Retrofit 2 Not WORKING 安卓 如何使用改造过帐原始数据或使用asynctask帮助 - Android. how to Post Raw data using retrofit or help in using asynctask Android Retrofit 2 - 发送数组时出现问题<object>使用 POST<div id="text_translate"><p> 我是 retrofit 的新手,现在,当我知道如何在没有任何对象的情况下发送普通数据时,仅使用参数或简单的主体我想知道如何发送对象......我花了大约 20 小时来调试它,我很困惑因为我不知道该怎么做...有我的代码:</p><p> API 接口:</p><pre> @POST("/api/assortment") Call<PostAssortment> getAssortment(@Body String PostShipmentProgress);</pre><p> 邮政分类 class:</p><pre> public class PostAssortment { private String JSON; @SerializedName("token") @Expose private String token; @SerializedName("assortment") @Expose private Assortment assortment; @SerializedName("tokens") @Expose private List<String> tokens; @SerializedName("positions") @Expose private List<Position> positions; @SerializedName("deviceId") @Expose private String deviceId; public String getToken() { return token; } public void setToken(String token) { this.token = token; } public Shipment getAssortment() { return assortment; } public void setAssortment(Assortment assortment) { this.assortment = assortment; } public List<String> getTokens() { return tokens; } public void setTokens(List<String> tokens) { this.tokens = tokens; } public List<Position> getPositions() { return positions; } public void setPositions(List<Position> positions) { this.positions = positions; } public String getDeviceId() { return deviceId; } public void setDeviceId(String deviceId) { this.deviceId = deviceId; } public String getJSON() { return JSON; } public void setJSON(String JSON) { this.JSON = JSON; } }</pre><p> 和 mainJava class:</p><pre> Gson gson = new Gson(); PostAssortment postAssortment= new PostAssortment(); List<String> tokens = new ArrayList<>(); tokens.add("someToken"); postAssortment.setTokens(tokens); postAssortment.setDeviceId("aaaaa"); List<Position> currentPosition = new ArrayList<>(); Position cp = new Position(); cp.setItemName("Some"); cp.setPlace("POLAND"); cp.setTimestamp("2020-12-09T11:00:00"); currentPosition.add(cp); postAssortment.setPositions(currentPosition); String postAssortmentJSON = gson.toJson(postAssortment); Call<PostAssortment> call = ApiLoginInterface.getAssortment(postAssortmentJSON); call.enqueue(new Callback<PostAssortment>() { @Override public void onResponse(Call<PostAssortment> call, Response<PostAssortment> response) { PostAssortment assortmentResponse = response.body(); } @Override public void onFailure(Call<PostAssortment> call, Throwable t) { Log.d("FAILURE", "onFailure: " + t.getMessage()); } }); }</pre><p> 还有我的 retrofit onCreate:</p><pre> Gson gson = new GsonBuilder().setLenient().create(); String BASE_URL = getString(API_URL); Retrofit retrofit = new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create(gson)).build(); ApiLoginInterface = retrofit.create(ApiLoginInterface.class);</pre><p> 在我尝试调用它之后,我没有得到任何调用排队的点</p><pre>Android: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference</pre><p> 错误......有人可以描述这个并帮助我让它工作吗? :/</p></div></object> - Android Retrofit 2 - problem with sending the Array<Object> using POST 如何使用 java 传递 POST 数组 object - retrofit 2 - How to pass a POST array object using java - retrofit 2
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM