Retrofit 查询参数未采用大于 2^32 的值
Retrofit query parameter is not taking values greater than 2^32
我正在做一个项目,我试图使用 user_id 从 Twitter API 获取一些数据。但是改造无法连接 userId > 整数上限(int 类型变量),即使 id 变量设置为 long 并且我一直收到错误消息。
我有办法通过其他方式获取此信息,但我想知道改造是否不支持长类型变量?
这里是错误信息-
01-26 11:50:17.600 4505-4505/com.kshitij.twitter E/CONNECTION ERROR﹕ com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Expected an int but was 2843025282 at line 1 column 17 path $.id
正在调用的函数。
cs.getUser(userId, new com.twitter.sdk.android.core.Callback<User>() {
@Override
public void success(com.twitter.sdk.android.core.Result<User> userResult) {
AddUserObject userObject = createAddUserObject(userResult.data);
addUserToDB(userObject);
}
@Override
public void failure(TwitterException e) {
Log.e("CONNECTION ERROR", e.getLocalizedMessage());
}
});
界面如下。
public static interface CustomService {
@GET("/1.1/users/show.json")
void getUser(@Query("user_id") long id, Callback<User> cb);
@GET("/1.1/statuses/user_timeline.json")
void getTweets(@Query("user_id") long id, @Query("count") long count, Callback<List<Description>> cb);
}
您的 User
Java 对象在应该是 long
.
时声明了 int id;
由于 ID 没有数字意义,实际上您最好始终将其用作 String
。
我正在做一个项目,我试图使用 user_id 从 Twitter API 获取一些数据。但是改造无法连接 userId > 整数上限(int 类型变量),即使 id 变量设置为 long 并且我一直收到错误消息。
我有办法通过其他方式获取此信息,但我想知道改造是否不支持长类型变量?
这里是错误信息-
01-26 11:50:17.600 4505-4505/com.kshitij.twitter E/CONNECTION ERROR﹕ com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Expected an int but was 2843025282 at line 1 column 17 path $.id
正在调用的函数。
cs.getUser(userId, new com.twitter.sdk.android.core.Callback<User>() {
@Override
public void success(com.twitter.sdk.android.core.Result<User> userResult) {
AddUserObject userObject = createAddUserObject(userResult.data);
addUserToDB(userObject);
}
@Override
public void failure(TwitterException e) {
Log.e("CONNECTION ERROR", e.getLocalizedMessage());
}
});
界面如下。
public static interface CustomService {
@GET("/1.1/users/show.json")
void getUser(@Query("user_id") long id, Callback<User> cb);
@GET("/1.1/statuses/user_timeline.json")
void getTweets(@Query("user_id") long id, @Query("count") long count, Callback<List<Description>> cb);
}
您的 User
Java 对象在应该是 long
.
int id;
由于 ID 没有数字意义,实际上您最好始终将其用作 String
。