Java 使用2的服务器没有响应
您好,在下面的代码中,我有一个get方法,它来自get方法,使用改型库解析json响应 对于下面的挑战类,通过pojo类解析json响应,但响应不是来自服务器 有谁能帮忙解决这个问题吗 答复:Java 使用2的服务器没有响应,java,android,retrofit2,Java,Android,Retrofit2,您好,在下面的代码中,我有一个get方法,它来自get方法,使用改型库解析json响应 对于下面的挑战类,通过pojo类解析json响应,但响应不是来自服务器 有谁能帮忙解决这个问题吗 答复: { success: true, result: { token: TOKENSTRING, // Challenge token to be used for login. serverTime: TI
{
success: true,
result: {
token: TOKENSTRING, // Challenge token to be used for login.
serverTime: TIMESTAMP, // Current Server time
expireTime: TIMESTAMP // Time when token expires
}
}
GetChallenge.java:
private void getchallenge() {
//Here a logging interceptor is created
HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
//The logging interceptor will be added to the http client
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.addInterceptor(logging);
final GetNoticeDataService service = RetrofitInstance.getRetrofitInstance().create(GetNoticeDataService.class);
/** Call the method with parameter in the interface to get the notice data*/
Call<ManageChallenge> call = service.getChallengeList();
/**Log the URL called*/
Log.wtf("URL Called", call.request().url() + "");
call.enqueue(new Callback<ManageChallenge>() {
@Override
public void onResponse(Call<ManageChallenge> call, Response<ManageChallenge> response) {
if(response.isSuccessful() ) {
ManageChallenge challenge=response.body();
// String response1=response.body().toString();
String success=challenge.getSuccess().toString();
if(success.equals("true")){
String result= challenge.getResult().toString();
try {
JSONObject jsonObject =new JSONObject(result);
String token = jsonObject.getString("token");
Log.i("token", "token" + token);
String serverTime =jsonObject.getString("serverTime");
Log.i("serverTime", "serverTime" + serverTime);
String expireTime =jsonObject.getString("expireTime");
Log.i("expireTime", "expireTime" + expireTime);
} catch (JSONException e) {
e.printStackTrace();
}
}
Log.i("REsult", "Get submitted to API." + challenge);
}
}
@Override
public void onFailure(Call<ManageChallenge> call, Throwable t) {
Toast.makeText(LoginActivity.this, "Something went wrong...Error message: " + t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
public class ManageChallenge {
@SerializedName("success")
private String success;
@SerializedName("result")
private List <getChallengeList> result;
public String getSuccess() {
return success;
}
public void setSuccess(String success) {
this.success = success;
}
public List<getChallengeList> getResult() {
return result;
}
public void setResult(List<getChallengeList> result) {
this.result = result;
}
}
GetNoticeDataService.java:
public interface GetNoticeDataService {
@Headers("Content-Type: application/json")
@GET("webservice.php?operation=getchallenge&username=admin")
Call<ManageChallenge> getChallengeList();
}
邮递员回应:
{"success":true,"result":{"token":"5e2ab99eb318f","serverTime":1579858334,"expireTime":1579858634}}
在postman响应中,“result”返回一个json对象,但在ManageChallenge.java中。将结果声明为对象列表。所以我认为它可能会导致一些错误时,铸造
另外,你应该在第一个字符处用大写字母声明你的类名。如果没有,它可能会在将来引起一些混乱
PS2。对不起,我的英语水平太差了。根据您的回复,这里没有关于问题的列表
@SerializedName("result")
private List<GetChallengeList> result;
GetChallengeList类
public class GetChallengeList {
@SerializedName("token")
@Expose
private String token;
@SerializedName("serverTime")
@Expose
private String serverTime;
@SerializedName("expireTime")
@Expose
private String expireTime;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getServerTime() {
return serverTime;
}
public void setServerTime(String serverTime) {
this.serverTime = serverTime;
}
public String getExpireTime() {
return expireTime;
}
public void setExpireTime(String expireTime) {
this.expireTime = expireTime;
}
public GetChallengeList(String tokens, String expireTimes, String serverTimes){
token = tokens;
expireTime = expireTimes;
serverTime = serverTimes;
}
}
我不明白这一点,您使用的是改型,并使用json对象获取响应,您可以直接将模型调用传递到改型中,然后使用模型调用轻松获取数据。response.body().challenge().getResult().toString()您是否与postman一起检查了api,它是否与postmanyes的预期一样工作它在postman和brower中工作,您是否可以发布postman响应here@Dulanga在下面的回答中添加了ppostman回答
@SerializedName("result")
private List<GetChallengeList> result;
public class ManageChallenge {
@SerializedName("success")
private String success;
@SerializedName("result")
private GetChallengeList result;
public String getSuccess() {
return success;
}
public void setSuccess(String success) {
this.success = success;
}
public GetChallengeList getResult() {
return result;
}
public void setResult(GetChallengeList result) {
this.result = result;
}
}
public class GetChallengeList {
@SerializedName("token")
@Expose
private String token;
@SerializedName("serverTime")
@Expose
private String serverTime;
@SerializedName("expireTime")
@Expose
private String expireTime;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public String getServerTime() {
return serverTime;
}
public void setServerTime(String serverTime) {
this.serverTime = serverTime;
}
public String getExpireTime() {
return expireTime;
}
public void setExpireTime(String expireTime) {
this.expireTime = expireTime;
}
public GetChallengeList(String tokens, String expireTimes, String serverTimes){
token = tokens;
expireTime = expireTimes;
serverTime = serverTimes;
}
}