当前位置: 首页 > 知识库问答 >
问题:

在Android中获得带有改进的对象数组

冯阳华
2023-03-14
private static Retrofit retrofit = null;

public static Retrofit getClient(String baseUrl) {
    if (retrofit==null) {
        retrofit = new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
    }
    return retrofit;
}

下面是使用我的GET方法的类:

public interface SOService {

    @GET("stocks/")
Call<List<Stock>> getStocks();

}

下面是我的类,包含url和如何连接:

public class ApiUtils {

    public static final String BASE_URL = "http://127.0.0.1:8000";

    public static SOService getSOService() {
        return RetrofitClient.getClient(BASE_URL).create(SOService.class);
    }
}

这就是我最终尝试获取信息的地方:

public class RegisterActivity extends AppCompatActivity {

    private Button registerButton;
    private SOService mService;


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

        mService = ApiUtils.getSOService();

        registerButton = findViewById(R.id.register_button);
        registerButton.setOnClickListener(v -> loadAnswers());
    }

    public void loadAnswers() {

        System.out.println("Entro aquí");
        mService.getStocks().enqueue(new Callback<List<Stock>>() {
        @Override
        public void onResponse(Call<List<Stock>> call, Response<List<Stock>> response) {
            if(response.isSuccessful()) {

                System.out.println("Te lo imprimo");
                System.out.println(response.body().toString());
                Log.d("MainActivity", "posts loaded from API");
            }else {
                int statusCode  = response.code();
                // handle request errors depending on status code
            }
        }

        @Override
        public void onFailure(Call<List<Stock>> call, Throwable t) {
            Log.d("MainActivity", "error loading from API");

        }
    });
    }
}
public class Stock {

    @SerializedName("id")
    @Expose
    private Integer id;
    @SerializedName("ticker")
    @Expose
    private String ticker;
    @SerializedName("open")
    @Expose
    private Double open;
    @SerializedName("close")
    @Expose
    private Double close;
    @SerializedName("volume")
    @Expose
    private Integer volume;

    public Integer getId() {
        return id;
    }

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

    public String getTicker() {
        return ticker;
    }

    public void setTicker(String ticker) {
        this.ticker = ticker;
    }

    public Double getOpen() {
        return open;
    }

    public void setOpen(Double open) {
        this.open = open;
    }

    public Double getClose() {
        return close;
    }

    public void setClose(Double close) {
        this.close = close;
    }

    public Integer getVolume() {
        return volume;
    }

    public void setVolume(Integer volume) {
        this.volume = volume;
    }

}

共有1个答案

宋华灿
2023-03-14

您应该尝试检索如下所示的对象列表:

public interface SOService {

    @GET("stocks/")
    Call<List<Stock>> getStocks();

}

mService.getStocks().enqueue(new Callback<List<Stock>>() {
            @Override
            public void onResponse(Call<List<Stock>> call, Response<List<Stock>> response) {
                if(response.isSuccessful()) {

                    System.out.println("Te lo imprimo");
                    System.out.println(response.body().toString());
                    Log.d("MainActivity", "posts loaded from API");
                }else {
                    int statusCode  = response.code();
                    // handle request errors depending on status code
                }
            }

            @Override
            public void onFailure(Call<List<Stock>> call, Throwable t) {
                Log.d("MainActivity", "error loading from API");

            }
        });

编辑

您正在尝试连接到计算机上的本地服务器,但通过模拟器。模拟器无法连接到此服务器。检查这个答案。您正在使用的本地URL将被改版用于识别您的电话(模拟器)上的本地端口和地址。这就是为什么你不能连接。你手机上没有那个地址的服务器。您需要输入您的pc ip地址,以便执行以下操作:)

 类似资料:
  • 因此,我有一个名为的对象数组,我需要获得每个球员的得分和犯规总数。 我的问题是我认为我使用了太多的 有没有更干净的解决方案? null null

  • 它成功获取名称、状态和登录。但它将0分配给u_id(用户ID),应该是4。也许它从Json获取id作为字符串?我不知道整数的正确JSON格式。 JSON: POJO:公共类LoginModel{ 界面: 改装功能调用:

  • 我正在为一家酒店开发一个应用程序,使酒店管理层能够报告和查看关注和问题。我正在使用Android和Firebase为这个应用程序。 为了最小化数据下载并优化速度,我正在数据库中添加“活动”和“已解析”节点,如下所示: 现在,酒店希望我添加一个函数来创建一个Excel报告,报告过去一个月内关闭/解决的问题。为此,我将在“resolved”节点上附加一个单值事件侦听器,获取已解决关注点的键,然后为每个

  • 问题内容: 我有一个SQL Server数据库,当在表中插入时,我想通知android应用程序。 例如,当收到订单时,我将其插入到SQL Server数据库中。我还希望用户在我的应用中收到有关订单的通知。该应用程序始终处于打开状态。我使用Web服务与数据库联系。 我不想每10秒钟左右请求一次表格。还有其他办法吗? 问题答案: 您可以使用Google Cloud消息服务,在此处了解如何设置服务器。

  • 基本上我正在从匕首迁移到剑柄。所以我必须删除这个参数 所以,我想从我的匕首剑柄模块传递应用程序类对象的地方很少。 很少有第三部分库。 法典: 像这样的地方很多。那么我该如何实现这一点呢? 编辑:

  • 问题内容: 在一个我目前正在从事的项目中,我遇到了一个角度异常: 在寻找解决方案的搜索中,我直接在浏览器中输入了Web服务的URL,但令人惊讶的是,我没有收到预期的数组。 Web服务类: 当我输入网址时,我希望看到带有JSON对象的JSON数组: 但是,相反,我收到的JSON对象的属性与我期望的JSON对象相同,没有任何数组: 所以我想知道为什么没有数组,当我添加另一个Clazz对象时会发生什么。