Java 无法获取响应。正文()
我试着用安卓改型和okhttp3创建登录和注册表单。当我点击“注册”按钮时,数据成功地插入到我的数据库中,但我的toast并没有显示,也不会自动直接进入登录页面。按钮登录上的问题也是一样的。如果我点击登录按钮,它不会直接进入另一个页面。RESTAPI上没有问题。我认为问题出在回调或response.body()中。我使用restfulcodeigniter 代码如下:Java 无法获取响应。正文(),java,android,retrofit,retrofit2,okhttp,Java,Android,Retrofit,Retrofit2,Okhttp,我试着用安卓改型和okhttp3创建登录和注册表单。当我点击“注册”按钮时,数据成功地插入到我的数据库中,但我的toast并没有显示,也不会自动直接进入登录页面。按钮登录上的问题也是一样的。如果我点击登录按钮,它不会直接进入另一个页面。RESTAPI上没有问题。我认为问题出在回调或response.body()中。我使用restfulcodeigniter 代码如下: mApiService.createUser( input_name.getText().toStrin
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();
}
}
);
mApiService.createUser(
输入_name.getText().toString(),
输入\u lastname.getText().toString(),
输入\u username.getText().toString(),
输入\u email.getText().toString(),
输入密码。getText().toString(),
输入\u phonenumber.getText().toString(),
输入\u country.getSelectedItem().toString()
)
.enqueue(新的回调函数(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
Log.i(“调试”,“onResponse:Successful”);
loading.dispose();
试一试{
JSONObject jsonRESULTS=新的JSONObject(response.body().string());
if(jsonRESULTS.getString(“error”).equals(“true”)){
Toast.makeText(mContext,“注册成功”,Toast.LENGTH_SHORT.show();
startActivity(新意图(mContext,signianctivity.class));
}否则{
字符串错误消息=jsonRESULTS.getString(“错误消息”);
Toast.makeText(mContext、错误消息、Toast.LENGTH.SHORT).show();
}
}捕获(JSONException | IOException e){
e、 printStackTrace();
}
}否则{
Log.i(“调试”,“onResponse:寄存器失败”);
loading.dispose();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.e(“debug”,“onFailure:ERROR>”+t.getMessage());
Toast.makeText(mContext,“连接失败”,Toast.LENGTH_SHORT.show();
}
}
);
下面是日志:
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)
内容类型:application/json;字符集=utf-8
05-17 11:02:24.263 23925-23955/com.example.user.pfmapp2 D/OkHttp:{“状态”:true,“消息”:“注册成功,请登录”,“0”:{“名称”:“测试”,“姓氏”:“用户名”:“测试”,“电子邮件”:Dddd33@gmail.com“,”密码“:”31a30b53d7faec7957e708dca6077e31“,”注册日期“:”17-05-18“,”手机号码“:”23412445“,”手机号码“:"+1"}}
你应该检查一下
response.code()
要检查您请求的状态并让我知道如何帮助您请尝试使用FastAndroidNetworking
。它易于理解和学习。issusccessful()
检查响应状态代码是否在范围[200,300)
内。如果您希望发生重定向,这意味着您将收到一个3xx
状态代码,该代码超出该范围,因此issusccessful()
返回false
。您可以尝试使用OkHttp
客户端,将followRedirect
设置为true
谢谢您的回答。但是,您能用示例解释一下吗?