【问题标题】:How to call PUT query with headers in retrofit android如何在改造android中调用带有标题的PUT查询
【发布时间】:2018-03-02 11:03:26
【问题描述】:

我想更新解析表字段。我已经通过邮递员测试了我的 API 调用,它在“PUT”上工作正常。它不适用于“GET”和“POST”查询,所以请只回答“PUT”。

我有一个要更新的 url、3 个标题和 1 个字段值。

我使用 retroFit 和 volley 的 REST API 调用“PUT”,但没有得到期望的结果。

谁能告诉我如何在retroFit和volley中调用“PUT”方法?

//卡瓦贾卡西姆

这是我用过的代码。

@Headers({
                "Content-Type: application/json",
                "X-Parse-Application-Id: TestApp",
                "X-Parse-REST-API-Key: 1234567890"
        })
        @PUT("https://example.com/hello")
        void updateValue(@Body JSONObject lastMessage,
                         Callback<JsonElement> callback);

..............

 ApiClient.getClient().updateValue(new JSONObject(hashMapKey), new BaseCallback() {

【问题讨论】:

    标签: android android-volley retrofit


    【解决方案1】:

    调用函数参数时使用了hader标签,这些是当前语法

    授权是我们在邮递员中发送标题标签的关键 @POST("购物车/更新") 调用getCartUpdate(@Header("Authorization") String Authorization, @Header("Time") String time, @Header("Key") String Key, @Body ProductList productList);

    【讨论】:

    • 感谢您的回复。但是我想问一下“PUT”方法呢?你给出了“POST”方法的答案。
    • 我不确定,但试试这个。 @FormUrlEncoded @PUT("/question/new") void send(@Field("questionName") String questionName, @Field("questionType") String questionType,choice @Header("X-Parse-Application-Id") String X-Parse-Application-Id, @Header("X-Parse-REST-API-Key) String X-Parse-REST-API-Key, @Field("correctOptionIndex") int correctOptionIndex, Callback>回调 );
    【解决方案2】:

    定义自定义请求标头

    Retrofit 提供了两个选项来定义 HTTP 请求头字段:静态和动态。不能针对不同的请求更改静态标头。 header 的 key 和 value 是固定的,并在应用启动时启动。

    相比之下,必须为每个请求设置动态标头。

    静态请求标头 添加静态标头的第一个选项是将您的 API 方法的标头和相应的值定义为注释。 Retrofit 会自动为使用此方法的每个请求添加标头。注释可以是键值对作为一个字符串或作为字符串列表。让我们来看两个说明定义选项的具体示例:

    改造 2

    public interface UserService {  
        @Headers("Cache-Control: max-age=640000")
        @GET("/tasks")
        Call<List<Task>> getTasks();
    }
    

    改造 1.9

    public interface UserService {  
        @Headers("Cache-Control: max-age=640000")
        @GET("/tasks")
        List<Task> getTasks();
    }
    

    更多参考。 https://futurestud.io/tutorials/retrofit-add-custom-request-header

    【讨论】:

    • 感谢您的回复。但我已经把标题。并想执行“PUT”方法。你给出了“GET”方法的答案。
    猜你喜欢
    • 1970-01-01
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 2023-03-26
    相关资源
    最近更新 更多