java - 无法获取 response.body()
问题描述
我尝试使用改造和 okhttp3 在 Android 中创建登录和注册表单。当我点击按钮注册时,数据成功插入到我的数据库中,但我的 toast 没有显示,它不会自动定向到登录页面。按钮登录的问题是相同的。如果我单击登录按钮,它不会直接到另一个页面。rest API 没有问题。我认为问题出在 Callback 或 response.body() 中。我使用宁静的 CodeIgniter。
这是代码:
mApiService.createUser(
input_name.getText().toString(),
input_lastname.getText().toString(),
input_username.getText().toString(),
input_email.getText().toString(),
input_password.getText().toString(),
input_phonenumber.getText().toString(),
input_country.getSelectedItem().toString()
)
.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
Log.i("debug", "onResponse: Successful");
loading.dismiss();
try {
JSONObject jsonRESULTS = new JSONObject(response.body().string());
if (jsonRESULTS.getString("error").equals("true")) {
Toast.makeText(mContext, "Register Successful", Toast.LENGTH_SHORT).show();
startActivity(new Intent(mContext, SignInActivity.class));
} else {
String error_message = jsonRESULTS.getString("error_msg");
Toast.makeText(mContext, error_message, Toast.LENGTH_SHORT).show();
}
} catch (JSONException | IOException e) {
e.printStackTrace();
}
} else {
Log.i("debug", "onResponse: Register Failed");
loading.dismiss();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.e("debug", "onFailure: ERROR > " + t.getMessage());
Toast.makeText(mContext, "Connection Failed", Toast.LENGTH_SHORT).show();
}
}
);
这是logcat:
content-type: application/json; charset=utf-8
05-17 11:02:24.263 23925-23955/com.example.user.pfmapp2 D/OkHttp: {"status":true,"message":"Registration Successfully, Please SignIn.","0":{"name":"test","lastname":"","username":"test","email":"Dddd33@gmail.com","password":"31a30b53d7faec7957e708dca6077e31","registration_date":"17-05-18","mobile_phone_number":"234124445","mobile_phone_number_code":"+1"}}
<-- END HTTP (313-byte body)
05-17 11:02:24.283 23925-23925/com.example.user.pfmapp2 I/debug: onResponse: Register Failed
05-17 11:02:24.301 23925-23941/com.example.user.pfmapp2 D/EGL_emulation: eglMakeCurrent: 0xa7b18960: ver 2 0 (tinfo 0xa341c6e0)
05-17 11:02:24.321 23925-23941/com.example.user.pfmapp2 D/EGL_emulation: eglMakeCurrent: 0xa7b18960: ver 2 0 (tinfo 0xa341c6e0)
解决方案
你应该检查
response.code()
检查您的请求状态并让我知道以帮助您
推荐阅读
- javascript - 如何将旧的(非事件驱动的)软件移植到 javascript
- ios - swift中使用mvvm模式的网络调用函数
- c++ - 无法通过引用函数“calcValues”中的变量“firstNum”和“secondNum”来更改值
- java - 如何解决时区和 SSL 的问题
- android - 我可以使用 NDK 访问设备文件(/dev/...)吗?
- java - Java - 无法导入 JIprolog 包
- php - Xdebug:如何禁用“xdebug.halt_level”
- node.js - 无法在 ember 中创建组件,每次都会遇到错误
- javascript - 如何从 jquery 对话框表中删除表的行?
- reactjs - 有条件地在 React 组件中渲染