当前位置: 首页 > 知识库问答 >
问题:

在POST请求中使用改版发送JSON[副本]

夏昊
2023-03-14
{"id":1,"nom":"Hydrogène","slug":"hydrogene"}
@POST("{TableName}/{ID}/update/0.0")
Call<String> cl_updateData(@Path("TableName") String TableName, @Path("ID") String ID);
public class ClientServiceGenerator{
private static OkHttpClient httpClient = new OkHttpClient();

public static <S> S createService(Class<S> serviceClass, String URL) {
    Retrofit.Builder builder =
            new Retrofit.Builder()
                    .baseUrl(URL)
                    .addConverterFactory(GsonConverterFactory.create());

    Retrofit retrofit = builder.client(httpClient).build();
    return retrofit.create(serviceClass);
}}
APIService client = ClientServiceGenerator.createService(APIService.class, "http://mysiteexample.com/api.php/");
    Call<String> call = client.cl_updateData("atomes", "1");
    call.enqueue(new Callback<String>() {
        @Override
        public void onResponse(Response<String> response, Retrofit retrofit) {
            if (response.code() == 200 && response.body() != null){
                Log.e("sd", "OK");
            }else{
                Log.e("Err", response.message()+" : "+response.raw().toString());
            }
        }

        @Override
        public void onFailure(Throwable t) {
            AlertDialog alertError = QuickToolsBox.simpleAlert(EditDataActivity.this, "updateFail", t.getMessage(), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });
            alertError.show();
        }
    });

如果你还需要什么,请告诉我,希望有人能帮助我。

EDIT第一次没有提到它,但我的JSON不会总是使用相同的键(id、nom、slug)。

共有1个答案

卜阳
2023-03-14

首先,您需要创建一个对象来表示所需的json:

public class Data {
    int id;
    String nom;
    String slug;

    public Data(int id, String nom, String slug) {
        this.id = id;
        this.nom = nom;
        this.slug = slug;
    }
}

然后,修改您的服务,使其能够发送此对象:

@POST("{TableName}/{ID}/update/0.0")
Call<String> cl_updateData(@Path("TableName") String TableName, @Path("ID") String ID, @Body Data data);

最后,传递这个对象:

Call<String> call = client.cl_updateData("atomes", "1", new Data(1, "Hydrogène", "hydrogene"));
@POST("{TableName}/{ID}/update/0.0")
Call<String> cl_updateData(@Path("TableName") String TableName, @Path("ID") String ID, 
        @Body Object data);
 类似资料:
  • 问题内容: 我正在使用Retrofit集成我的Web服务,但我不明白如何使用POST请求将JSON对象发送到服务器。我目前陷入困境,这是我的代码: 活动:- PostInterface:- 要求JSON:- 响应JSON:- 问题答案: 在gradle中使用这些 使用这两个POJO类........ LoginData.class LoginResult.class 像这样使用API 使用这样的呼

  • 我有一个对象,作为另一个GET请求的响应接收它<代码>jsonElement。toString() 看起来像JSON数组: 我需要通过另一个使用改装的POST请求发送此字符串。如何通过POST请求发送jsonElement或String对象?我的方法声明应该怎么看?例如:

  • 我得到以下错误 响应数据为空。我做错了什么,或者我在代码中遗漏了什么?

  • 有人知道使用发布JSON的正确方法吗? 我从服务器得到响应。它使用Chrome工作。

  • 这是我的控制器: 这是我的配置: 这是类别类: 如果我尝试发送内容类型为application/json和以下正文的post请求: {“id”:8,“title”:“Паа”、“engTitle”:“Pizza”、“description”:null,“menuItems”:[{“id”:4,“title”:“Паааааааааааа”和“engTitle”:“Pepperoni”、“price

  • 用简单的话来说,我想发送这个数据到服务器,使用Volley Post Request。 它有一个整数和一个字符串,我得到的响应是Jsonarray 我尝试过以下方法,但都不管用 > 因为它是json数组请求,我不能在参数中发送数据,因为第三个参数只需要JsonArray,我必须发送JsonObject,所以保持为null 我不能把它放在中,因为值的1是整数,并且它只接受字符串 getparams(