Создание и отправка Http запроса на php файл из Java в Android Приложении

Всем добрый день, возникла необходиомость отправки запроса на php скрипт, который сформирует json файл, а сам выдаст в структуру страници некий текст, допустим WELL DONE , по сути пытался сделать что-то вроде wget или curl , но не получилось, примеры из интернет опять одни краши и ошибки. Прошу помочь или хотя бы направить,спасибо.

Вот кот:

void QueryGetJSONApi() throws IOException
{
    URL url = new URL("https://site.com/api/get_api.php");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    InputStream stream = conn.getInputStream();
    InputStreamReader isReader = new InputStreamReader(stream );

    BufferedReader br = new BufferedReader(isReader );
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
    br.close();
}

Ещё вопрос, можно ли отследить состояние ответа от php файла, например: Если PHP вернул WELL DONE , то выполнить другой код, заранее спасибо всем.


Ответы (2 шт):

Автор решения: AVRamones

Попробовать можете через эту библиотеку: https://loopj.com/android-async-http/ Безусловно существует множество более продвинутых инструментов. Следуя туториалу добавите необходимые зависимости, ну а далее все просто:

AsyncHttpClient client = new AsyncHttpClient();
client.get("https://site.com/api/get_api.php", new AsyncHttpResponseHandler() {

@Override
public void onSuccess(int statusCode, Header[] headers, byte[] response) {
     String responseString = new String(response.body);
     JSONObject object = new JSONObject(responseString);
}

@Override
public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
    Log.d("ERROR", "error");
}

 });

Если все пройдет успешно в методе onSuccess создастся полученый JSONobject. В случае неудачи выведется Log.

→ Ссылка
Автор решения: Tiana

Спасибо Юрию за помощь, публикую решение на основе данной мне информации:

Использовал библеотеку okhttp

Подключаем:

 implementation("com.squareup.okhttp3:okhttp:4.0.0")

Отправляем асинхронно запрос:

Request request = new Request.Builder()
     .url(url)
     .build();

 new OkHttpClient().newCall(request)
     .enqueue(new Callback() {
         @Override
         public void onFailure(final Call call, IOException e) {
             e.printStackTrace();
         }

         @Override
         public void onResponse(Call call, final Response response) throws IOException 
     {
             String res = response.body().string();
         }
     });
→ Ссылка