android - 进行 HTTP 请求时处理字符串的正确方法是什么?

标签 android http retrofit

我有一个 Android 应用程序充当我的后端服务器的客户端。

我正在 Retrofit lib 的帮助下执行一个 POST http 请求,正文中有一个字符串。

问题是,Retrofit 在使用 GSON 构建器时很可能会转义双引号。

这会导致我的数据库中的一个字段包含双引号,例如:"example_gcm_token"

我需要知道我应该在服务器端还是在客户端处理它,以及如何处理。

我认为它不应该在服务器端,因为这意味着我必须为每个端点删除转义引号。

@POST ("/Maguss/users/{userId}/gcmtoken")
    Call<Void> setGcmToken(@Path("userId") Long userId, @Body StringEntity gcmToken);

最佳答案

我会尝试用 POJO 替换 StringEntity:

public class SetGcmTokenRequest {
    @SerializedName("gcmtoken")
    private String gcmToken;

    public String getGcmToken() {
        return gcmToken;
    }

    public void setGcmToken(String gcmToken) {
        this.gcmToken = gcmToken;
    }
}

然后像这样更改界面:

@POST ("/Maguss/users/{userId}/gcmtoken")
Call<Void> setGcmToken(@Path("userId") Long userId, @Body SetGcmTokenRequest setGcmTokenRequest);

关于android - 进行 HTTP 请求时处理字符串的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36119365/

相关文章:

android - 如何将 setOnFocusChangeListener 与 RecyclerView 一起使用?

c++ - 错误套接字更新 C++

java - 改造中的基本授权

android - 使用 Retrofit 处理变量 JSON

android - 使用 Flutter 在 VSCode 中未检测到模拟器

java - 应用程序意外停止: Fatal Exception

Angular 5 HTTP Client 的 Response header 中缺少 "Authorization"

javascript - AngularJS 中的 HTTP POST 请求返回 403

java - 任何人都可以帮助我通过改造从网络服务中获取数据吗?

android - 在代理上运行 Genymotion/MEmu