Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法在改型2中获取json对象和数组_Java_Android_Json_Rest_Retrofit2 - Fatal编程技术网

Java 无法在改型2中获取json对象和数组

Java 无法在改型2中获取json对象和数组,java,android,json,rest,retrofit2,Java,Android,Json,Rest,Retrofit2,我试图从api解析json,但response.issucess返回false 我的模态类是, package arpit.retrodemo; import java.util.List; import java.util.ArrayList; public class Modal { private List<RolesEntity> roles = new ArrayList<>(); public void setR

我试图从api解析json,但response.issucess返回false
我的模态类是,

package arpit.retrodemo;


import java.util.List;
import java.util.ArrayList;

public class Modal {           

    private List<RolesEntity> roles = new ArrayList<>();

    public void setRoles(List<RolesEntity> roles) {
        this.roles = roles;
    }

    public List<RolesEntity> getRoles() {
        return roles;
    }

    public static class RolesEntity {
        private String id;
        private String role;
        private String description;
        private String icon_url;
        private String created_at;
        private String updated_at;

        public void setId(String id) {
            this.id = id;
        }

        public void setRole(String role) {
            this.role = role;
        }

        public void setDescription(String description) {
            this.description = description;
        }

        public void setIcon_url(String icon_url) {
            this.icon_url = icon_url;
        }

        public void setCreated_at(String created_at) {
            this.created_at = created_at;
        }

        public void setUpdated_at(String updated_at) {
            this.updated_at = updated_at;
        }

        public String getId() {
            return id;
        }

        public String getRole() {
            return role;
        }

        public String getDescription() {
            return description;
        }

        public String getIcon_url() {
            return icon_url;
        }

        public String getCreated_at() {
            return created_at;
        }

        public String getUpdated_at() {
            return updated_at;
        }
    }
}

APIService.java是,

package arpit.retrodemo;

import retrofit.Call;
import retrofit.http.GET;

public interface APIService {
    @GET("/roles")
    Call<Modal> getDetails();
}
package arpit.retrodemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import retrofit.Call;
import retrofit.Callback;
import retrofit.GsonConverterFactory;
import retrofit.Response;
import retrofit.Retrofit;

public class MainActivity extends AppCompatActivity {

    private static final String ENDPOINT = "http://badiyajobs.com/apis/v1";
    private APIService service;
    private Modal mod;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Retrofit retrofit = new Retrofit.Builder()
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl(ENDPOINT)
                .build();
        service = retrofit.create(APIService.class);
        Call<Modal> userList = service.getDetails();
        userList.enqueue(new Callback<Modal>() {
            @Override
            public void onResponse(Response<Modal> response) {
                if(response.isSuccess()){
                    Log.d("findRes", response.body().toString());
                }else{
                    Log.d("find", "Something is wrong! " + response.errorBody().toString());
                }
            }

            @Override
            public void onFailure(Throwable t) {
                Log.d("findError", t.getMessage());
            }
        });
    }
}


您需要执行以下操作,而不是response.body()的字符串表示形式:

public interface APIService {
    @GET("roles") /*removed the / here */
    Call<Modal> getDetails();
}

private static final String ENDPOINT = "http://badiyajobs.com/apis/v1/"; /* added the / here */
公共接口服务{
@获取(“角色”)/*删除/此处*/
调用getDetails();
}
私有静态最终字符串终结点=”http://badiyajobs.com/apis/v1/"; /* 在此处添加了/*/

你能通过检查onResponse回调中的response参数简单地调试和检查错误吗?嘿,它成功了,谢谢,你能给我一点解释为什么更改这些参数有效吗?查看
安装-改型类型(31:24)
新URL解析概念中的部分。与URI解析的方式基本相同,现在它没有将两者连接在一起,而是使用了一些奇怪的魔法,据说会更好。虽然我个人认为这只是一个很容易犯非直觉错误的方法,但我看不出有什么好处。本质上,您必须将
/
放在BaseURL的末尾,而不是放在服务方法的前面。
D/find: Something is wrong! com.squareup.okhttp.ResponseBody$1@52715c98
public interface APIService {
    @GET("roles") /*removed the / here */
    Call<Modal> getDetails();
}

private static final String ENDPOINT = "http://badiyajobs.com/apis/v1/"; /* added the / here */