Создание и отправка 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 шт):
Попробовать можете через эту библиотеку: 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.
Спасибо Юрию за помощь, публикую решение на основе данной мне информации:
Использовал библеотеку 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();
}
});