gpt4 book ai didi

java - JsonReader.setLenient(true) 在第 1 行第 1 列路径 $ Error 处接受格式错误的 JSON

转载 作者:太空狗 更新时间:2023-10-29 15:28:05 24 4
gpt4 key购买 nike

我正在尝试为我的应用程序创建忘记密码脚本。当我运行我的 apk 并尝试重置我的密码时,我收到错误消息,提示使用 JsonReader.setLenient(true) 在第 1 行第 1 列路径 $ 接受格式错误的 JSON错误,我的 apk 中一切正常,我可以登录和注销或注册,但是当我重设密码时,出现 JsonReader.setLenient(true) 错误。我的 apk json 正在运行并且是正确的。请帮我。我正在分享我的代码。

{
"operation":"resPassReq",
"user":{
"email":"name@example.com"

}
}

如果请求成功,响应将类似于,

{
"result": "success",
"message": "Check your mail for reset password code."
}

为了完成密码重置过程,请求类似于,

{
"operation":"resPass",
"user":{
"email":"name@example.com",
"code":"bcfqa3",
"password":"rjamalw"

}
}

如果请求成功,响应将类似于,

{
"result": "success",
"message": "Password Changed Successfully"
}

重置密码 fragment .java

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class ResetPasswordFragment extends Fragment implements View.OnClickListener{

private AppCompatButton btn_reset;
private EditText et_email,et_code,et_password;
private TextView tv_timer;
private ProgressBar progress;
private boolean isResetInitiated = false;
private String email;
private CountDownTimer countDownTimer;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_password_reset,container,false);
initViews(view);
return view;
}

private void initViews(View view){

btn_reset = (AppCompatButton)view.findViewById(R.id.btn_reset);
tv_timer = (TextView)view.findViewById(R.id.timer);
et_code = (EditText)view.findViewById(R.id.et_code);
et_email = (EditText)view.findViewById(R.id.et_email);
et_password = (EditText)view.findViewById(R.id.et_password);
et_password.setVisibility(View.GONE);
et_code.setVisibility(View.GONE);
tv_timer.setVisibility(View.GONE);
btn_reset.setOnClickListener(this);
progress = (ProgressBar)view.findViewById(R.id.progress);


}

@Override
public void onClick(View v) {
switch (v.getId()){

case R.id.btn_reset:

if(!isResetInitiated) {


email = et_email.getText().toString();
if (!email.isEmpty()) {
progress.setVisibility(View.VISIBLE);
initiateResetPasswordProcess(email);
} else {

Snackbar.make(getView(), "Fields are empty !", Snackbar.LENGTH_LONG).show();
}
} else {

String code = et_code.getText().toString();
String password = et_password.getText().toString();

if(!code.isEmpty() && !password.isEmpty()){

finishResetPasswordProcess(email,code,password);
} else {

Snackbar.make(getView(), "Fields are empty !", Snackbar.LENGTH_LONG).show();
}

}

break;
}
}

private void initiateResetPasswordProcess(String email){

Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();

RequestInterface requestInterface = retrofit.create(RequestInterface.class);

User user = new User();
user.setEmail(email);
ServerRequest request = new ServerRequest();
request.setOperation(Constants.RESET_PASSWORD_INITIATE);
request.setUser(user);
Call<ServerResponse> response = requestInterface.operation(request);

response.enqueue(new Callback<ServerResponse>() {
@Override
public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {

ServerResponse resp = response.body();
Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

if(resp.getResult().equals(Constants.SUCCESS)){

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();
et_email.setVisibility(View.GONE);
et_code.setVisibility(View.VISIBLE);
et_password.setVisibility(View.VISIBLE);
tv_timer.setVisibility(View.VISIBLE);
btn_reset.setText("Change Password");
isResetInitiated = true;
startCountdownTimer();

} else {

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

}
progress.setVisibility(View.INVISIBLE);
}

@Override
public void onFailure(Call<ServerResponse> call, Throwable t) {

progress.setVisibility(View.INVISIBLE);
Log.d(Constants.TAG,"failed");
Snackbar.make(getView(), t.getLocalizedMessage(), Snackbar.LENGTH_LONG).show();
Log.d(Constants.TAG, t.getLocalizedMessage());
}
});
}

private void finishResetPasswordProcess(String email,String code, String password){

Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();

RequestInterface requestInterface = retrofit.create(RequestInterface.class);

User user = new User();
user.setEmail(email);
user.setCode(code);
user.setPassword(password);
ServerRequest request = new ServerRequest();
request.setOperation(Constants.RESET_PASSWORD_FINISH);
request.setUser(user);
Call<ServerResponse> response = requestInterface.operation(request);

response.enqueue(new Callback<ServerResponse>() {
@Override
public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {

ServerResponse resp = response.body();
Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

if(resp.getResult().equals(Constants.SUCCESS)){

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();
countDownTimer.cancel();
isResetInitiated = false;
goToLogin();

} else {

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

}
progress.setVisibility(View.INVISIBLE);
}

@Override
public void onFailure(Call<ServerResponse> call, Throwable t) {

progress.setVisibility(View.INVISIBLE);
Log.d(Constants.TAG,"failed");
Snackbar.make(getView(), t.getLocalizedMessage(), Snackbar.LENGTH_LONG).show();

}
});
}

private void startCountdownTimer(){
countDownTimer = new CountDownTimer(120000, 1000) {

public void onTick(long millisUntilFinished) {
tv_timer.setText("Time remaining : " + millisUntilFinished / 1000);
}

public void onFinish() {
Snackbar.make(getView(), "Time Out ! Request again to reset password.", Snackbar.LENGTH_LONG).show();
goToLogin();
}
}.start();
}

private void goToLogin(){

Fragment login = new LoginFragment();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.fragment_frame,login);
ft.commit();
}
}

请求接口(interface).java

public interface RequestInterface {

@POST("req/")
Call<ServerResponse> operation(@Body ServerRequest request);

}

但是当我像下面这样更改我的代码时,一切正常,但问题是在失败时得到了响应

private void initiateResetPasswordProcess(String email){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();

RequestInterface requestInterface = retrofit.create(RequestInterface.class);

User user = new User();
user.setEmail(email);
ServerRequest request = new ServerRequest();
request.setOperation(Constants.RESET_PASSWORD_INITIATE);
request.setUser(user);
Call<ServerResponse> response = requestInterface.operation(request);

response.enqueue(new Callback<ServerResponse>() {
@Override
public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {

ServerResponse resp = response.body();
Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

if(resp.getResult().equals(Constants.SUCCESS)){

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();
et_email.setVisibility(View.GONE);
et_code.setVisibility(View.VISIBLE);
et_password.setVisibility(View.VISIBLE);
tv_timer.setVisibility(View.VISIBLE);
btn_reset.setText("Change Password");
isResetInitiated = true;
startCountdownTimer();

} else {

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

}
progress.setVisibility(View.INVISIBLE);
}

@Override
public void onFailure(Call<ServerResponse> call, Throwable t) {

progress.setVisibility(View.INVISIBLE);
Log.d(Constants.TAG,"failed");
// Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();
et_email.setVisibility(View.GONE);
et_code.setVisibility(View.VISIBLE);
et_password.setVisibility(View.VISIBLE);
tv_timer.setVisibility(View.VISIBLE);
btn_reset.setText("Change Password");
isResetInitiated = true;
startCountdownTimer();
// Snackbar.make(getView(), t.getLocalizedMessage(), Snackbar.LENGTH_LONG).show();


}
});
}

private void finishResetPasswordProcess(String email,String code, String password){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();

Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();

RequestInterface requestInterface = retrofit.create(RequestInterface.class);

User user = new User();
user.setEmail(email);
user.setCode(code);
user.setPassword(password);
ServerRequest request = new ServerRequest();
request.setOperation(Constants.RESET_PASSWORD_FINISH);
request.setUser(user);
Call<ServerResponse> response = requestInterface.operation(request);

response.enqueue(new Callback<ServerResponse>() {
@Override
public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {

ServerResponse resp = response.body();
Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

if(resp.getResult().equals(Constants.SUCCESS)){

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();
countDownTimer.cancel();
isResetInitiated = false;
goToLogin();

} else {

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

}
progress.setVisibility(View.INVISIBLE);
}

@Override
public void onFailure(Call<ServerResponse> call, Throwable t) {

progress.setVisibility(View.INVISIBLE);
Log.d(Constants.TAG,"failed");
// Snackbar.make(getView(), t.getLocalizedMessage(), Snackbar.LENGTH_LONG).show();
countDownTimer.cancel();
isResetInitiated = false;
goToLogin();

}
});
}

服务器响应.java

public class ServerResponse {

private String result;
private String message;
private User user;

public String getResult() {
return result;
}

public String getMessage() {
return message;
}

public User getUser() {
return user;
}
}

服务器请求.java

public class ServerRequest {

private String operation;
private User user;

public void setOperation(String operation) {
this.operation = operation;
}

public void setUser(User user) {
this.user = user;
}
}

最佳答案

    private void initiateResetPasswordProcess(String email){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();

RequestInterface requestInterface = retrofit.create(RequestInterface.class);

User user = new User();
user.setEmail(email);
ServerRequest request = new ServerRequest();
request.setOperation(Constants.RESET_PASSWORD_INITIATE);
request.setUser(user);
Call<ServerResponse> response = requestInterface.operation(request);

response.enqueue(new Callback<ServerResponse>() {
@Override
public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {

ServerResponse resp = response.body();
Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

if(resp.getResult().equals(Constants.SUCCESS)){

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();
et_email.setVisibility(View.GONE);
et_code.setVisibility(View.VISIBLE);
et_password.setVisibility(View.VISIBLE);
tv_timer.setVisibility(View.VISIBLE);
btn_reset.setText("Change Password");
isResetInitiated = true;
startCountdownTimer();

} else {

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

}
progress.setVisibility(View.INVISIBLE);
}

@Override
public void onFailure(Call<ServerResponse> call, Throwable t) {

progress.setVisibility(View.INVISIBLE);
Log.d(Constants.TAG,"failed");
// Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();
et_email.setVisibility(View.GONE);
et_code.setVisibility(View.VISIBLE);
et_password.setVisibility(View.VISIBLE);
tv_timer.setVisibility(View.VISIBLE);
btn_reset.setText("Change Password");
isResetInitiated = true;
startCountdownTimer();
// Snackbar.make(getView(), t.getLocalizedMessage(), Snackbar.LENGTH_LONG).show();


}
});
}

private void finishResetPasswordProcess(String email,String code, String password){
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();

RequestInterface requestInterface = retrofit.create(RequestInterface.class);

User user = new User();
user.setEmail(email);
user.setCode(code);
user.setPassword(password);
ServerRequest request = new ServerRequest();
request.setOperation(Constants.RESET_PASSWORD_FINISH);
request.setUser(user);
Call<ServerResponse> response = requestInterface.operation(request);

response.enqueue(new Callback<ServerResponse>() {
@Override
public void onResponse(Call<ServerResponse> call, retrofit2.Response<ServerResponse> response) {

ServerResponse resp = response.body();
Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

if(resp.getResult().equals(Constants.SUCCESS)){

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();
countDownTimer.cancel();
isResetInitiated = false;
goToLogin();

} else {

Snackbar.make(getView(), resp.getMessage(), Snackbar.LENGTH_LONG).show();

}
progress.setVisibility(View.INVISIBLE);
}

@Override
public void onFailure(Call<ServerResponse> call, Throwable t) {

progress.setVisibility(View.INVISIBLE);
Log.d(Constants.TAG,"failed");
// Snackbar.make(getView(), t.getLocalizedMessage(), Snackbar.LENGTH_LONG).show();
countDownTimer.cancel();
isResetInitiated = false;
goToLogin();

}
});
}

关于java - JsonReader.setLenient(true) 在第 1 行第 1 列路径 $ Error 处接受格式错误的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41738214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com