Android Studio - 使用 retrofit2 从 restdb 获取信息
Posted
技术标签:
【中文标题】Android Studio - 使用 retrofit2 从 restdb 获取信息【英文标题】:Android Studio - Using retrofit2 to get info from restdb 【发布时间】:2021-07-28 12:53:33 【问题描述】:我正在尝试使用 Retrofit2 为我的 android 应用程序创建一个 GET 请愿书。我遵循了有关如何创建代码的教程,并且它适用于不需要任何身份验证的网页。然后我尝试根据我的需要调整相同的代码,但我无法做到正确。要么我收到 401 错误,要么我收到 500 错误。
我想访问这个网址: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 作为标头发送有关,我不知道。有人能告诉我我哪里错了吗?提前致谢。
【问题讨论】:
【参考方案1】:如果您想将 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”
【讨论】:
嗨,我完全不确定标题。我一直在尝试很多组合,并且我尝试复制与 Postman 中相同的标题(我可以使用 Postman 访问数据库而没有任何问题)。是的,查询应该没问题。有没有更简单或更正确的方法将我的应用程序连接到在线数据库?我可以迁移到任何其他类型的数据库,我只需要它“易于”编程。以上是关于Android Studio - 使用 retrofit2 从 restdb 获取信息的主要内容,如果未能解决你的问题,请参考以下文章
air jordan 13 retro 2017 reviews and story
javascript bootstrap_retro_prepworx.js
Air Jordan 8 Retro Performance Review