Зависимости (Gradle)

Убедитесь, что в вашем файле build.gradle присутствуют следующие зависимости:

dependencies {
    implementation 'com.squareup.okhttp3:okhttp:4.12.0'
    implementation 'org.json:json:20231013'
}

Важные примечания:

Пример кода

import okhttp3.*;
import org.json.JSONArray;
import org.json.JSONObject;

import java.io.IOException;
import java.util.Base64;

public class CareerjetApiWithJobs {
    public static void main(String[] args) {
        String apiKey = "<API_KEY>";
        String userIp = "<USER_IP>";
        String userAgent = "<USER_AGENT>";
        String referer = "https://example-publisher-site.com/find-jobs/?s=java+developer&l=Москва";

        HttpUrl url = new HttpUrl.Builder()
                .scheme("https")
                .host("search.api.careerjet.net")
                .addPathSegments("v4/query")
                .addQueryParameter("locale_code", "ru_KZ")
                .addQueryParameter("keywords", "java developer")
                .addQueryParameter("location", "Москва")
                .addQueryParameter("user_ip", userIp)
                .addQueryParameter("user_agent", userAgent)
                .build();

        String credentials = apiKey + ":";
        String basicAuth = "Basic " + Base64.getEncoder().encodeToString(credentials.getBytes());

        Request request = new Request.Builder()
                .url(url)
                .get()
                .header("Content-Type", "application/json")
                .header("Authorization", basicAuth)
                .header("Referer", referer)
                .build();

        OkHttpClient client = new OkHttpClient.Builder()
                .callTimeout(java.time.Duration.ofSeconds(2))
                .build();

        try (Response response = client.newCall(request).execute()) {
            System.out.println("HTTP Status Code: " + response.code());

            if (response.body() != null) {
                String responseBody = response.body().string();
                JSONObject result = new JSONObject(responseBody);

                // Check if response type is JOBS
                if ("JOBS".equals(result.optString("type"))) {
                    int hits = result.optInt("hits");
                    int pages = result.optInt("pages");

                    System.out.println("Found " + hits + " jobs on " + pages + " pages\n");

                    JSONArray jobs = result.optJSONArray("jobs");
                    if (jobs != null) {
                        for (int i = 0; i < jobs.length(); i++) {
                            JSONObject job = jobs.getJSONObject(i);

                            System.out.println("URL         : " + job.optString("url"));
                            System.out.println("TITLE       : " + job.optString("title"));
                            System.out.println("COMPANY     : " + job.optString("company"));
                            System.out.println("SALARY      : " + job.optString("salary"));
                            System.out.println("DATE        : " + job.optString("date"));
                            System.out.println("DESCRIPTION : " + job.optString("description"));
                            System.out.println("LOCATIONS   : " + job.optString("locations"));
                            System.out.println();
                        }
                    }
                } else {
                    System.out.println("Response type is not 'JOBS'");
                }

            } else {
                System.out.println("Empty response body.");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}