我想升级到Retrofit 2.0,但遇到了奇怪的问题。
我有一个用于登录用户的方法。
public interface ApiInterface {
@Multipart
@POST("user/login/")
Call<SessionToken> userLogin(@Part("username") String username, @Part("password") String password);
}
当我查看服务器端的关键值POST参数时,它们会像这样打印。username : "brian"
password : "password"
使用Retrofit 1.9的相同方法,K:V对如下所示:
username : brian
password : password
它是将双引号添加到POST变量中。
如果我使用其他REST客户端,则变量会像第二种方式一样打印,没有引号。
以下是我使用拦截器构建Retrofit实例的方法。
OkHttpClient client = new OkHttpClient();
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request original = chain.request();
// Customize the request
Request request = original.newBuilder()
.header("Accept", "application/json")
.header("Authorization", myPrefs.accessToken().getOr(""))
.method(original.method(), original.body())
.build();
Response response = chain.proceed(request);
// Customize or return the response
return response;
}
});
Ok2Curl.set(client);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(apiEndpoint)
.addConverterFactory(GsonConverterFactory.create())
.client(client)
.build();
我想我在使用转换器时做错了什么,但不确定具体是哪里出了问题。
还有其他人遇到过这个问题吗?我知道它还处于测试阶段,但使用范围相当广泛。
@Multipart
Retrofit API方法,字符串是一个@Part
项。服务器将字符串“test”作为“”test“”接收。真让人抓狂!!! - Matthew Housser