【问题标题】:API connection suddenly does not work anymore via appAPI连接突然不再通过应用程序工作
【发布时间】: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


【解决方案1】:

如果您的代码之前可以正常工作,那么服务器端似乎存在一些问题。你检查过请求限制吗?

您可以使用 API-SPORTS API 的RapidAPI integration。如果它仍然无法正常工作,您可以随时写信给 RapidAPI 支持团队 (support@rapidapi.com)。他们非常活跃,会解决您的问题。

【讨论】:

    猜你喜欢
    • 2016-12-20
    • 2021-01-27
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-04
    • 1970-01-01
    相关资源
    最近更新 更多