Почему я не получаю POST-переменные от OkHttp3? (Android Studio)

Я ответил на свой вопрос здесь. Смотрите первый блок кода, где я использую ввод php: // для получения опубликованных данных.

Я пытаюсь отправить запрос на публикацию из моего приложения на веб-сервер, и я проверяю наличие записей с помощью PHP:

if( isset( $_POST['name'] ) ){
echo json_encode(['status' => 1]);
}else if( $posted_data = (string) @file_get_contents('php://input') ) {
echo json_encode(['status' => 2]);
}else{
echo json_encode($_POST);
}

Запрос всегда возвращает пустой массив в формате json.

Я использую последнюю версию Android Studio и последнюю версию OkHttp, com.squareup.okhttp3: okhttp: 3.4.1. Для меня это похоже на «Hello World» OkHttp в Android Studio.

В MainActivity.java:

public void postSomething(View view) {
String url = "https://example.com/json_api_test.php";
String json = "{\"name\":\"cholula\"}";
OkHttpPostHandler handler = new OkHttpPostHandler();
String result = "";
try {
result = handler.execute(url, json).get();
} catch (Exception e) {
e.printStackTrace();
}
displayPostResponse(result + "\n");
}

Мой OkHttpPostHandler.java:

public class OkHttpPostHandler extends AsyncTask<String, Void, String> {

OkHttpClient client = new OkHttpClient();

public static final MediaType JSON
= MediaType.parse("application/json; charset=utf-8");

@Override
protected String doInBackground(String... params) {

RequestBody body = RequestBody.create(JSON, params[1]);

Request request = new Request.Builder()
.url(params[0])
.post(body)
.build();

try {
Response response = client.newCall(request).execute();
return response.body().string();
}
catch( Exception e ){
return "HTTP Request Error";
}
}
}

Когда я отлаживаю, я вижу, что значение params [1] является ожидаемой json-подобной строкой, но это последний раз, когда я ее вижу.

Я пытался сформировать JSON несколькими способами, поэтому я не уверен, что это проблема. Я просто не понимаю, почему я не вижу опубликованные переменные, когда почтовый запрос попадает на сервер.

Как я могу увидеть опубликованные переменные на веб-сервере? Что я делаю неправильно? Я использую Android Studio и Java менее недели, поэтому понятия не имею. Я действительно много раз искал в интернете ответ, и поэтому публикация здесь — последнее средство.

Спасибо!

0

Решение

Оказывается, нужно использовать php: // input, чтобы получить опубликованные данные.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]