尝试使用翻新2检索json数组数据,但被卡住,这是用于检索数据的URL。
https://xenzet.com/GameCheat/viewgamesjson.php
这是获取所有游戏的方法
public void fetch_information() {
ApiInterface = ApiClient.getApiClient().create(Api.class);
Call<List<Games>> call = ApiInterface.GetGames();
call.enqueue(new Callback<List<Games>>() {
@Override
public void onResponse(Call<List<Games>> call, Response<List<Games>> response) {
gameslist = new ArrayList<Games>();
gameslist = response.body();
int gamescounter = gameslist.size();
}
@Override
public void onFailure(Call<List<Games>> call, Throwable t) {
Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
这是Api的界面
public interface Api {
@GET("GameCheat/viewgamesjson.php")
Call<List<Games>> GetGames();
}
这是ApiClient
public class ApiClient {
public static String Base_URL ;
public static Retrofit retrofit;
public static Retrofit getApiClient()
{
if (retrofit == null)
{
Base_URL ="https://xenzet.com/";
retrofit = new Retrofit.Builder().baseUrl(Base_URL)
.addConverterFactory(GsonConverterFactory.create()).build();
}
return retrofit;
}
}
但是我无法从URL接收游戏列表(数据)。
我遇到的问题是URL,我得到了这个URL,所以我不知道如何划分基本URL以及@Get(“”)中传递的内容。
由于这些问题,我尝试了另一种方法来执行此操作。
我尝试从URL读取而不是进行改造
private static String readUrl(String urlString) throws Exception {
BufferedReader reader = null;
try {
URL url = new URL(urlString);
reader = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuffer buffer = new StringBuffer();
int read;
char[] chars = new char[1024];
while ((read = reader.read(chars)) != -1)
buffer.append(chars, 0, read);
return buffer.toString();
} finally {
if (reader != null)
reader.close();
}
}
和onCreate方法
try {
String url = readUrl("https://xenzet.com/GameCheat/viewgamesjson.php");
Gson gson = new Gson();
Games mgames = gson.fromJson(url, Games.class);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Url not working", Toast.LENGTH_SHORT).show();
}
但是在获取catch异常和不读取URL时会出错。
我在这里做什么?