【发布时间】:2021-11-23 08:55:28
【问题描述】:
我是 Android 新手,我有一个名为“https://codyderunner.000webhostapp.com/Server/songbannner.php”的文件,响应 JSON 格式如下:Json response from my file
我想在 Android Studio 中使用 Retrofit 获取这些 JSON。
我有一个DataService接口:
public interface DataService {
@GET("songbannner.php")
Call<List<Ads>> GetDataBanner();
}
广告是我想要接收的数据的模型类。
我的APIService.java文件代码:
public class APIService {
private static String base_url = "https://codyderunner.000webhostapp.com/Server/";
public static DataService getService(){
return APIRetrofitClient.getClient(base_url).create(DataService.class);
};
}
我的 API.RetrofitClient 代码:
public class APIRetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getClient(String base_url){
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.readTimeout(10000, TimeUnit.MILLISECONDS)
.writeTimeout(10000, TimeUnit.MILLISECONDS)
.connectTimeout(10000, TimeUnit.MILLISECONDS)
.retryOnConnectionFailure(true)
.protocols(Arrays.asList(Protocol.HTTP_1_1))
.build();
Gson gson = new GsonBuilder().setLenient().create();
retrofit = new Retrofit.Builder()
.baseUrl(base_url)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
return retrofit;
};
在我的主类中,我有一个从该文件中获取数据的函数:
private void GetData(){
DataService dataService = APIService.getService();
Call<List<Ads>> callback = dataService.GetDataBanner();
callback.enqueue(new Callback<List<Ads>>() {
@Override
public void onResponse(Call<List<Ads>> call, Response<List<Ads>> response) {
ArrayList<Ads> banner = (ArrayList<Ads>) response.body();
Log.d("AAAA", banner.get(0).getNameSong());
}
@Override
public void onFailure(Call<List<Ads>> call, Throwable t) {
}
});
}
现在,问题是,我无法从文件中收到任何响应,我认为这可能是因为当我尝试获取文件响应的数据时进行了身份验证。当我用浏览器打开链接时它很好,因为它记住了我的密码,但是当我尝试从 Android Studio 读取文件的 JSON 时,它似乎没有希望。我还尝试阅读 Postman 上的链接,它发布了“未经授权”,所以我认为关键是如何将我的用户名和密码放入 Retrofit 中,以便文件会像在浏览器中一样响应。
有人遇到同样的问题吗?帮助我,我尝试了我所知道的一切。非常感谢。
【问题讨论】:
标签: java android api retrofit2 okhttp