|
@@ -232,7 +232,7 @@ public class NetworkRepository {
|
|
|
|
|
|
|
|
return Single.fromCallable(() -> {
|
|
return Single.fromCallable(() -> {
|
|
|
try {
|
|
try {
|
|
|
- retrofit2.Response<OAuth2TokenResponse> response = chinaTowerApiService.getOAuth2TokenByPassword(
|
|
|
|
|
|
|
+ retrofit2.Response<ResponseBody> response = chinaTowerApiService.getOAuth2TokenByPassword(
|
|
|
AuthUtil.generateDefaultBasicAuth(), // 默认Basic Auth
|
|
AuthUtil.generateDefaultBasicAuth(), // 默认Basic Auth
|
|
|
username,
|
|
username,
|
|
|
password,
|
|
password,
|
|
@@ -241,23 +241,40 @@ public class NetworkRepository {
|
|
|
).execute();
|
|
).execute();
|
|
|
|
|
|
|
|
if (response.isSuccessful() && response.body() != null) {
|
|
if (response.isSuccessful() && response.body() != null) {
|
|
|
- OAuth2TokenResponse tokenResponse = response.body();
|
|
|
|
|
- // 保存token
|
|
|
|
|
- sessionManager.saveAuthTokenWithExpiry(tokenResponse.getAccessToken(), tokenResponse.getExp());
|
|
|
|
|
- // 保存用户数据
|
|
|
|
|
- sessionManager.saveUserData(tokenResponse);
|
|
|
|
|
- // 保存刷新token
|
|
|
|
|
- sessionManager.saveRefreshToken(tokenResponse.getRefreshToken());
|
|
|
|
|
-
|
|
|
|
|
- Log.i(TAG, "密码登录成功");
|
|
|
|
|
- return tokenResponse;
|
|
|
|
|
|
|
+ // 获取响应体字符串
|
|
|
|
|
+ String responseBodyString = response.body().string();
|
|
|
|
|
+ Log.i(TAG, "密码登录响应: " + responseBodyString);
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 先尝试解析为OAuth2TokenResponse
|
|
|
|
|
+ OAuth2TokenResponse tokenResponse = JsonUtil.fromJson(responseBodyString, OAuth2TokenResponse.class);
|
|
|
|
|
+
|
|
|
|
|
+ // 检查关键字段是否有效
|
|
|
|
|
+ if (tokenResponse.getAccessToken() != null && !tokenResponse.getAccessToken().isEmpty()) {
|
|
|
|
|
+ // 保存token
|
|
|
|
|
+ sessionManager.saveAuthTokenWithExpiry(tokenResponse.getAccessToken(), tokenResponse.getExp());
|
|
|
|
|
+ // 保存用户数据
|
|
|
|
|
+ sessionManager.saveUserData(tokenResponse);
|
|
|
|
|
+ // 保存刷新token
|
|
|
|
|
+ sessionManager.saveRefreshToken(tokenResponse.getRefreshToken());
|
|
|
|
|
+
|
|
|
|
|
+ Log.i(TAG, "密码登录成功");
|
|
|
|
|
+ return tokenResponse;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 可能是错误响应
|
|
|
|
|
+ throw new RuntimeException("用户名或密码错误");
|
|
|
|
|
+ }
|
|
|
|
|
+ } catch (Exception parseException) {
|
|
|
|
|
+ // 如果解析失败,认为是错误响应
|
|
|
|
|
+ Log.e(TAG, "解析响应失败,可能是错误响应: " + parseException.getMessage());
|
|
|
|
|
+ throw new RuntimeException("用户名或密码错误");
|
|
|
|
|
+ }
|
|
|
} else {
|
|
} else {
|
|
|
Log.e(TAG, "密码登录失败: " + response.message());
|
|
Log.e(TAG, "密码登录失败: " + response.message());
|
|
|
- throw new IOException("登录失败: " + response.message());
|
|
|
|
|
|
|
+ throw new RuntimeException(response.message());
|
|
|
}
|
|
}
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
|
Log.e(TAG, "密码登录异常: " + e.getMessage(), e);
|
|
Log.e(TAG, "密码登录异常: " + e.getMessage(), e);
|
|
|
- throw new IOException("网络请求失败: " + e.getMessage());
|
|
|
|
|
|
|
+ throw new RuntimeException(e.getMessage());
|
|
|
}
|
|
}
|
|
|
}).subscribeOn(Schedulers.io())
|
|
}).subscribeOn(Schedulers.io())
|
|
|
.observeOn(AndroidSchedulers.mainThread());
|
|
.observeOn(AndroidSchedulers.mainThread());
|