微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android Studio - 使用retrofit2 从restdb 获取信息

如何解决Android Studio - 使用retrofit2 从restdb 获取信息

我正在尝试使用 Retrofit2 为我的 Android 应用创建一个 GET 请愿书。我遵循了有关如何创建代码的教程,它可以与不需要任何身份验证的网页一起使用。然后我尝试根据我的需要调整相同的代码,但我无法做到。我要么收到 401 错误,要么收到 500 错误

我想访问此 URL:http://adaptai-eea8.restdb.io/rest/usuarios 所以我的 baseurl 是 http://adaptai-eea8.restdb.io/。 这是我的函数,它在 MainActivity 中:

private void find(String codigo){
    String apikey = "9dc3afb8b6087192d5e9e50c5f2cb44927be5";

    Retrofit retrofit = new Retrofit.Builder().baseUrl("http://adaptai-eea8.restdb.io/")
            .addConverterFactory(GsonConverterFactory.create()).build();

    UsuarioAPI usuarioAPI = retrofit.create(UsuarioAPI.class);
    Call<Usuario> call = usuarioAPI.find(codigo);
    call.enqueue(new Callback<Usuario>() {
        @Override
        public void onResponse(Call<Usuario> call,Response<Usuario> response) {
            try {
                int a = 5;
                if(response.isSuccessful()){
                    Usuario u = response.body();
                    textView.setText(u.getContra());
                    Log.d("Funciona",u.getContra());
                }


            }catch(Exception ex){
                Toast.makeText(MainActivity.this,ex.getMessage(),Toast.LENGTH_SHORT);
            }
        }

        @Override
        public void onFailure(Call<Usuario> call,Throwable t) {
            Toast.makeText(MainActivity.this,"Error de conexión",Toast.LENGTH_SHORT);
        }
    });
}

这是我正在使用的 GET 请愿:

    @Headers({"User-Agent: my-restdb-app","Content-Type: application/x-www-form-urlencoded","x-apikey: heregoestheapikey","Accept: application/json","cache-control: no-cache"})
//@FormUrlEncoded
@GET("rest/usuarios/")
//public Call<Usuario> find(@Query("nombre") String nombre);
Call<Usuario> find(@Query("nombre") String nombre);

这段代码肯定有问题,可能与将 apikey 作为标头发送有关,我不知道。有人能告诉我我错在哪里吗?提前致谢。

解决方法

如果您想将 apiKey 作为标头传递,您需要将其作为参数传递,就像您在 docs 中看到的那样

@Headers({"User-Agent: my-restdb-app","Content-Type: application/x-www-form-urlencoded","Accept: application/json","cache-control: no-cache"})
@GET("rest/usuarios/")
Call<Usuario> find(@Header("x-apikey") String apiKey,@Query("nombre") String nombre);

另外,你确定其余的参数吗?就像 User-Agent 是“my-restdb-app”和查询参数名称是“nombre”

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。