Я разрабатываю простое приложение для Android, которое делает простой запрос на отправку на сервер. Но он отправляет нулевые значения для обоих ключей, которые требуются в качестве тела запроса с сервера. Я проверяю его с конца моего приложения, но он не отправляет нулевые значения.okhttp post request отправка нулевых значений на сервер
вот мой код php.
<?php
include 'DBConnection.php';
$db = DBConnection::getInstance();
$db = DBConnection::getInstance();
$mysqli = $db->getConnection();
$username = $_POST ['username'];
$password = $_POST ['password'];
$result_array = array (
"username " => $username,
"password " => $password
);
echo (json_encode($result_array));
?>
Вот код в приложении для Android.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new LoginPostRequest().execute(RestConnection.LOGIN_POST);
}
});
}
private class LoginPostRequest extends AsyncTask<String, Object, String> {
private RequestBody body;
@Override
protected void onPreExecute() {
String userNameData = userName.getText().toString().replace(" ","");
String PasswordData = password.getText().toString().replace(" ","");
JSONObject requestBody = new JSONObject();
try {
requestBody.put("username", userNameData);
requestBody.put("password", PasswordData);
} catch (JSONException e) {
Log.d(TAG,"Login onPreExecute"+e.getLocalizedMessage());
}
String string = requestBody.toString();
body = RequestBody.create(JSON, string);
}
@Override
protected String doInBackground(String... params) {
String urlEndPoint = params[0];
Request request = new Request.Builder()
.url(RestConnection.API_BASE+urlEndPoint)
.post(body)
.build();
try {
Response response = client.newCall(request).execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return "String";
}
@Override
protected void onPostExecute(String response) {
JSONObject responseBody;
try {
responseBody = new JSONObject(response);
String message = responseBody.getString("message");
if(!message.equals("login failed")){
Toast.makeText(MainActivity.this,message,Toast.LENGTH_LONG).show();
Intent i = new Intent(MainActivity.this,MainMenuActivity.class);
startActivity(i);
finish();
}else{
Toast.makeText(MainActivity.this,message,Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
Log.d(TAG,"Login onPostExecute :"+e.getLocalizedMessage());
}
}
}
Я использую версию ohttp v3.5.0. Что я делаю не так?
рекомендовал бы использовать 'Retrofit' /' gson' при взаимодействии с REST API. –
см. Этот http://stackoverflow.com/questions/32856401/using-okhttp-library-for-posting-to-a-php-script-that-saves-to-mysql, который имеет полный пример. – rafsanahmad007
@ rafsanahmad007 Это старая версия на okhttp. не тот ответ, который я ищу. Укажите, какие ошибки в моем коде отсутствуют. –