ohttp возвращает нулевой ответ - PullRequest
1 голос
/ 15 февраля 2020
    ```protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main3);
    ctx=getApplicationContext();
    txtString= (TextView)findViewById(R.id.txtString);
    httpClient = new OkHttpClient();
    try {
        sendGETT();
            }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}
protected void sendGETT() throws IOException {
    httpClient = new OkHttpClient();
    OkHttpClient client = new OkHttpClient();

    Request request = new Request.Builder()
            .url("https://devru-gaana-v1.p.rapidapi.com/featuredAlbums.php")
            .get()
            .addHeader("x-rapidapi-host", "devru-gaana-v1.p.rapidapi.com")
            .addHeader("x-rapidapi-key", "my api key")
            .build();

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
        httpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                try (ResponseBody responseBody = response.body()) {
                    if (!response.isSuccessful())
                        throw new IOException("Unexpected code " + response.body().string());

                    Headers responseHeaders = response.headers();
                    for (int i = 0, size = responseHeaders.size(); i < size; i++) {
                        System.out.println(responseHeaders.name(i) + ": " + 
                      responseHeaders.value(i));
                        Main3Activity.txtString.setText(response.header("Server"));

                    }
                    Gson gson = new GsonBuilder().setPrettyPrinting().create();
                    JsonParser jp = new JsonParser();
                    JsonElement je = jp.parse(response.body().charStream());
                    final String prettyJsonString = gson.toJson(je);
                     runOnUiThread(new Runnable() {
                        @Override
                        public void run() { 
                         txtString.setText(prettyJsonString);
                        }
                    });
                }
              }
        });
    }
}```

Я пытаюсь использовать okhttpclient с okhttp3, но он возвращает нулевое значение. Я пробовал другой URL с заголовками, которые работают нормально, но когда я пытаюсь это, он дает нулевой ответ. Я пробовал множество решений из net но я не могу понять это. надеюсь, что help.thanks Этот код отлично работает, например, для Response response = client.newCall(request).execute(); Request request = new Request.Builder() .url("https://httpbin.org/get") .addHeader("custom-key", "mkyong") // add request headers .addHeader("User-Agent", "OkHttp Bot") .build(); или любого другого веб-сайта, но я хочу получить содержимое веб-сайта с использованием быстрого API с добавлением заголовков

    ```Request request = new Request.Builder()
            .url("https://devru-gaana-v1.p.rapidapi.com/featuredAlbums.php")
            .get()
            .addHeader("x-rapidapi-host", "devru-gaana-v1.p.rapidapi.com")
            .addHeader("x-rapidapi-key", "mine api for site")
            .build();```
...