android 如何使用改进发送POST,等待处理和接收响应JSON?

cnh2zyt3  于 2023-02-11  发布在  Android
关注(0)|答案(2)|浏览(119)

在我的应用中,我向服务器发送一个包含信息的Json,服务器处理该信息,并在有结果后返回另一个Json响应,我不知道如何读取该响应Json。
这是代码的一部分:'

private void sendData(String tipo, String dni, String instrucciones, String video) {
    progressDialog.setMessage("wait ...");
    progressDialog.setCancelable(false);
    progressDialog.show();

    ApiInterface apiInterface = SendDeviceDetails.getRetrofit().create(ApiInterface.class);
    final PostModel postModel= new PostModel(tipo, dni, instrucciones, video);
    Call<PostModel> call = apiInterface.PostData(postModel);

    call.enqueue(new Callback<PostModel>() {

         @Override
         public void onResponse(Call<PostModel> call, Response<PostModel> response) {
            progressDialog.dismiss();
            if (response.isSuccessful()) {
                
                Toast.makeText(MainActivity3.this, response.body().getStatus(), Toast.LENGTH_LONG).show();
                
            }
            

         }

         @Override
         public void onFailure(Call<PostModel> call, Throwable t) {
            progressDialog.dismiss();
            Toast.makeText(MainActivity3.this, "error in conexion", Toast.LENGTH_SHORT).show();
         }
     });

'
它在submit,process上运行良好,我可以读取服务的结果,但我不知道如何读取响应json服务器发送给我这个json:结果JSON:{“状态”:“1”,“消息”:“确定”,“ID”:“609691”,“名称”:“xxxxxxxxx”}

p1iqtdky

p1iqtdky1#

你声明的模型类看起来像这样

public class PostModel {

// request
..................
........

// response
@SerializedName("status")
public String status;

@SerializedName("message")
public String message;

@SerializedName("ID")
public String ID;

@SerializedName("NAME")
public String NAME;
}

读响应

PostModel postModel = response.body();

   String message = postModel.message;

   Toast.makeText(context, "message", Toast.LENGTH_SHORT).show();
njthzxwz

njthzxwz2#

假设您希望将PostModel模型作为请求对象发送,并将PostResultModel对象作为响应接收,然后使用以下方法创建接口:

public interface ApiInterface {
    Call<PostResultModel> postData(@Body PostModel request);
}

public class PostResultModel {
    @SerializedName("status")
    private String status;

    @SerializedName("message")
    private String message;

    @SerializedName("ID")
    private String id;

    @SerializedName("NAME")
    private String name;

    // getters and setters 
}

可以按如下方式使用此方法:

ApiInterface apiInterface = SendDeviceDetails.getRetrofit().create(ApiInterface.class);
final PostModel postModel= new PostModel(tipo, dni, instrucciones, video);
Call<PostResultModel> call = apiInterface.postData(postModel);

call.enqueue(
   new Callback<PostResultModel>() {
      @Override
      public void onResponse(Call<PostResultModel> call, Response<PostResultModel> response) {
         if (response.isSuccessful()) {
            final PostResultModel postResultModel = response.body();

            // todo some logic with reponse
         }
      }

      @Override
      public void onFailure(Call<PostResultModel> call, Throwable t) {
         // todo some logic when request failed
      }
   }
);

有关详细信息,请参见this article

相关问题