【发布时间】:2021-11-08 21:06:47
【问题描述】:
我正在制作一个实时足球应用程序,使用 API-Sports
他们的documentation
它曾经像 2 周前一样工作。当我确定它有效时,我还将我的 git 反转回
我正在使用 Android Studio 构建应用程序,并使用 OkHttp 向 API 发出请求。
public class Testing extends AppCompatActivity {
private static String TAG = FixtureOverview.class.getName();
String host = "v3.football.api-sports.io";
String API_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_testing);
Log.d(TAG, "onCreate called");
OkHttpClient client = new OkHttpClient();
Date dateTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String currentDate = formatter.format(dateTime);
Request request = new Request.Builder()
.url("https://v3.football.api-sports.io/fixtures?league=39&season=2021&date=" + currentDate)
.get()
.addHeader("x-rapidapi-host", host)
.addHeader("x-rapidapi-key", API_KEY)
.build();
System.out.println("request: " + request);
//Send API request
client.newCall(request).enqueue(new Callback() {
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
Log.d(TAG, " onResponse of request called");
try (ResponseBody responseBody = response.body()) {
if (!response.isSuccessful()) {
Log.d("ChampionsTeamSelect onResponse", "unexpected code");
throw new IOException("Unexpected code " + response);
}
Headers responseHeaders = response.headers();
Log.d("ChampionsTeamSelect onResponse", "headers");
for (int i = 0, size = responseHeaders.size(); i < size; i++) {
System.out.println("response header: " + responseHeaders.name(i) + ": " + responseHeaders.value(i));
}
try{
String jsonData = response.body().string();
System.out.println("jsonData: " + jsonData);
} catch (Exception e){
e.getMessage();
}
}
}
@Override
public void onFailure(Call request, IOException e) {
Log.d("EDMTERROR", "onfailure");
e.printStackTrace();
}
});
}
}
发送请求时使用以下代码
String jsonData = response.body().string();
System.out.println("jsonData: " + jsonData);
给予
I/System.out: jsonData: {"get":"fixtures","parameters":{"league":"39","season":"2021","date":"2021-09-13"},"errors":{"token":"Error\/Missing application key. Go to https:\/\/www.api-football.com\/documentation-v3 to learn how to get your API application key."},"results":0,"paging":{"current":1,"total":1},"response":[]}
API-Sports 有一个带有现场演示的仪表板,您基本上可以在其中发送请求而无需代码,在这里它可以使用相同的 api-key。 我也尝试过更新 api-key。
就像我说的,它曾经有效。
我尝试通过他们的聊天功能联系 API-Sports,但一个多星期没有收到答复。
通过仪表板,我还可以看到他们的服务器已启动并正常运行。
代码有什么问题吗,还有什么我可以尝试的吗?或者这是 API 方面的东西?在这种情况下我必须尝试其他方式联系他们?
【问题讨论】:
-
代码看起来不错。由于我们不是服务器管理员,因此我们无法提供太多帮助。它们可能会限制您在某个时间段内可以发出的请求总数
-
@OneCricketeer 是的,有一个限制,但我没有超过这个限制。我想我只能再次尝试与他们联系。
-
尝试使用 curl 并发布结果。这应该是比他们自己的基于网络的工具更好的测试。
标签: java android okhttp api-key