I am trying to register user details like(nam, number, email, password and image). I have already written API in php and it's working fine if I post it from postman.
But when I tried to send data from android then I am getting error message from server like "Required parameters (name, email or password) is missing!
". It's working when i post from postman but not from my android code. I am surely doing something wrong.
Here is php api :
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
header('Content-Type: application/json');
header('Access-Control-Allow-Headers: Authorization');
require_once 'include/DB_Functions.php';
$db = new DB_Functions();
// json response array
$response = array("status" => 1);
if (isset($_POST['name']) && isset($_POST['number']) && isset($_POST['email']) && isset($_POST['password']) && isset( $_FILES[ 'image' ]) && isset($_POST['pns_token']) && isset($_POST['is_owner']) && isset($_POST['tbl_flat_id']) && isset($_POST['tbl_building_id']) && isset($_POST['tbl_society_id'])) {
$name = $_POST['name'];
$number = $_POST['number'];
$email = $_POST['email'];
$password = $_POST['password'];
$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$pns_token = $_POST['pns_token'];
$is_owner = $_POST['is_owner'];
$tbl_flat_id = $_POST['tbl_flat_id'];
$tbl_building_id = $_POST['tbl_building_id'];
$tbl_society_id = $_POST['tbl_society_id'];
//$guest_master = $db -> storeGuest($name, $number, $email, $password, $image);
// check if user is already existed with the same email
if ($db->isUserExisted($email)) {
// user already existed
$response["status"] = 1;
$response["message"] = "User already existed with " . $email;
echo json_encode($response);
} else {
// create a new user
$user = $db->storeUser($name, $number, $email, $password, $image, $pns_token, $is_owner, $tbl_flat_id, $tbl_building_id, $tbl_society_id);
if ($user) {
return result
$response["status"] = 0;
$response["id"] = intval($user["userId"]);
$response["message"] = "User registered successfully with " . $email;
echo json_encode($response);
} else {
// user failed to store
$response["status"] = 2;
$response["message"] = "Unknown error occurred in registration!";
echo json_encode($response);
}
}
} else {
// receiving the post params
$response["status"] = 3;
$response["message"] = "Required parameters (name, email or password) is missing!";
echo json_encode($response);
}
?>
Here is my android code :
NetworkService.java :
public interface NetworkService {
// retrofit get call
@FormUrlEncoded
@POST(Constants.USER_LOGIN)
Call<UserLoginResponse> executeLogin(@Field("email") String email,
@Field("password") String password);
@FormUrlEncoded
@POST(Constants.USER_REGISTER)
Call<UserRegistrationResponse> executeRegistration(@Field("name") String name,
@Field("number") String number,
@Field("email") String email,
@Field("password") String password,
@Field("image") File imagePath,
@Field("pns_token") String pnsToken,
@Field("is_owner") int isOwner,
@Field("tbl_flat_id") int flatId,
@Field("tbl_building_id") int buildingId,
@Field("tbl_society_id") int societyId
);
}
Here is my RegisterActivity.java . :
NetworkService networkService =
App.getClient(EXTENDED_URL).create(NetworkService.class);
Call<UserRegistrationResponse> call =
networkService.executeRegistration(txtName.getText().toString(),
txtNumber.getText().toString(),
txtEmail.getText().toString(),
txtPassword.getText().toString(),
imagePath,
pnsToken,
0,
flatId,
buildingId,
societyId
);
Here is code which converting image to file in RegsiterActivity :
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
imvPhoto.setImageBitmap(imageBitmap);
Uri selectedImage = data.getData();
imagePath = savebitmap("profile_photo", imageBitmap);
}
}
private File savebitmap(String filename, Bitmap imageBitmap) {
File filesDir = getFilesDir();
File imageFile = new File(filesDir, filename + ".jpg");
OutputStream os;
try {
os = new FileOutputStream(imageFile);
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 100, os);
os.flush();
os.close();
} catch (Exception e) {
Log.e(getClass().getSimpleName(), "Error writing bitmap", e);
}
return imageFile;
}
Please provide my any reference or help so I can resolve this.