Android 应用程序无法通过php mysql从服务器发送和检索文件

Android 应用程序无法通过php mysql从服务器发送和检索文件,android,mysql,android-studio,android-volley,Android,Mysql,Android Studio,Android Volley,我在我的应用程序中有一个页面,上面有类似的代码和不同的值,它们可以将信息发送到我的PHP MySQL。另一方面,我的应用程序中的此页面无法发送文件并向我发送错误消息: E/Volley: [258] BasicNetwork.performRequest: Unexpected response code 406 for http://applybpojobs.com/widevalueappfiles/server/api/addvehicle.php 我已经在网站上尝试了许多解决方案

我在我的应用程序中有一个页面,上面有类似的代码和不同的值,它们可以将信息发送到我的PHP MySQL。另一方面,我的应用程序中的此页面无法发送文件并向我发送错误消息:

 E/Volley: [258] BasicNetwork.performRequest: Unexpected response code 406 
 for http://applybpojobs.com/widevalueappfiles/server/api/addvehicle.php
我已经在网站上尝试了许多解决方案,但都没有成功。有人能帮我弄清楚吗

这是我的java:

public class Addvehicle extends AppCompatActivity {

private static final String TAG = Addvehicle.class.getSimpleName();
private EditText plate_number, vin, car_make, car_model, car_year, displacement,
        fuel_type, transmission, mileage, owner_name, address, phone_number,
        email_adress, facebook;
private TextView btnCreate;
private TextView btnClose;
private ImageView upload_car, preview;
private int GALLERY = 1, CAMERA = 2;

private static String URL_ADD_VEHICLE = "http://abcde/server/api/addvehicle.php";
//private static String URL_VEHICLE_IMAGE = "http://abcde/server/api/addvehicle.php";
private Bitmap bitmap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_addvehicle);

    requestMultiplePermissions();

    /*EditText Area*/
    plate_number =          findViewById(R.id.plate_number);
    vin =                   findViewById(R.id.vin);
    car_make =              findViewById(R.id.car_make);
    car_model =             findViewById(R.id.car_model);
    car_year =              findViewById(R.id.car_year);
    displacement =          findViewById(R.id.displacement);
    fuel_type =             findViewById(R.id.fuel_type);
    transmission =          findViewById(R.id.transmission);
    mileage =               findViewById(R.id.mileage);
    owner_name =            findViewById(R.id.owner_name);
    address =               findViewById(R.id.address);
    phone_number =          findViewById(R.id.phone_number);
    email_adress =          findViewById(R.id.email_adress);
    facebook =              findViewById(R.id.facebook);

    /*TextView Area*/

    btnClose =              findViewById(R.id.btnClose);
    btnCreate =             findViewById(R.id.btnCreate);

    /*Button Area*/

    upload_car = findViewById(R.id.iv);
    preview = findViewById(R.id.iv);

    upload_car.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            showPictureDialog();
        }
    });

    btnClose.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(Addvehicle.this, Home.class));
        }
    });

    btnCreate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showLoader();
            addVehicle(getStringImage(bitmap));
        }
    });


}

private void showPictureDialog(){
    AlertDialog.Builder pictureDialog = new AlertDialog.Builder(this);
    pictureDialog.setTitle("Select Action");
    String[] pictureDialogItems = {
            "Select photo from gallery",
            "Capture photo from camera" };
    pictureDialog.setItems(pictureDialogItems,
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    switch (which) {
                        case 0:
                            choosePhotoFromGallary();
                            break;
                        case 1:
                            takePhotoFromCamera();
                            break;
                    }
                }
            });
    pictureDialog.show();
}

public void choosePhotoFromGallary() {
    Intent galleryIntent = new Intent(Intent.ACTION_PICK,
            android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

    startActivityForResult(galleryIntent, GALLERY);
}

private void takePhotoFromCamera() {
    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, CAMERA);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == this.RESULT_CANCELED) {
        return;
    }
    if (requestCode == GALLERY) {


        if (data != null) {
            Uri filePath = data.getData();
            try {
                bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), filePath);
                String path = getStringImage(bitmap);
                Toast.makeText(Addvehicle.this, "Image Saved!", Toast.LENGTH_SHORT).show();
                preview.setImageBitmap(bitmap);

            } catch (IOException e) {
                e.printStackTrace();
                Toast.makeText(Addvehicle.this, "Failed!", Toast.LENGTH_SHORT).show();
            }
            addVehicle(getStringImage(bitmap));


        }

    } else if (requestCode == CAMERA) {
        Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
        preview.setImageBitmap(thumbnail);
        getStringImage(thumbnail);
        Toast.makeText(Addvehicle.this, "Image Saved!", Toast.LENGTH_SHORT).show();
    }
    addVehicle(getStringImage(bitmap));


}


private void addVehicle(final String stringImage) {
    final String plate_number = this.plate_number.getText().toString().trim();
    final String vin = this.vin.getText().toString().trim();
    final String car_make = this.car_make.getText().toString().trim();
    final String car_model = this.car_model.getText().toString().trim();
    final String car_year = this.car_year.getText().toString().trim();
    final String displacement = this.displacement.getText().toString().trim();
    final String fuel_type = this.fuel_type.getText().toString().trim();
    final String transmission = this.transmission.getText().toString().trim();
    final String mileage = this.mileage.getText().toString().trim();
    final String owner_name = this.owner_name.getText().toString().trim();
    final String address = this.address.getText().toString().trim();
    final String phone_number = this.phone_number.getText().toString().trim();
    final String email_adress = this.email_adress.getText().toString().trim();
    final String facebook = this.facebook.getText().toString().trim();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_ADD_VEHICLE,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.i(TAG, response.toString());
                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        String Success = jsonObject.getString("success");
                        if (Success.equals("1")){
                            hideLoader();
                            Toast.makeText(Addvehicle.this,"Vehicle Added Successfully",Toast.LENGTH_SHORT).show();

                        }else if (Success.equals("0")){
                            hideLoader();
                            Toast.makeText(Addvehicle.this,"Vehicle Already Exist",Toast.LENGTH_SHORT).show();

                        }

                    }catch (JSONException e){
                        e.printStackTrace();
                        hideLoader();
                        Toast.makeText(Addvehicle.this,"Vehicle Added Error"+e.toString(),Toast.LENGTH_SHORT).show();
                    }
                }
            },
            new Response.ErrorListener(){
                @Override
                public void onErrorResponse(VolleyError error){
                    Toast.makeText(Addvehicle.this,"Vehicle Added Error"+error.toString(),Toast.LENGTH_SHORT).show();
                    hideLoader();
                }
            })

    {
        @Override
        protected Map<String, String> getParams() throws AuthFailureError{
            Map<String, String> params = new HashMap<>();
            params.put("plate_number", plate_number);
            params.put("vin", vin);
            params.put("car_make", car_make);
            params.put("car_model", car_model);
            params.put("car_year", car_year);
            params.put("displacement", displacement);
            params.put("fuel_type", fuel_type);
            params.put("transmission", transmission);
            params.put("mileage", mileage);
            params.put("owner_name", owner_name);
            params.put("address", address);
            params.put("phone_number", phone_number);
            params.put("email_adress", email_adress);
            params.put("facebook", facebook);
            params.put("photo", stringImage);
            return params;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);

}

public void showLoader(){
    ProgressDialog progressDialog = new ProgressDialog(this);
    progressDialog.setMessage("Adding Vehicle...");
    progressDialog.show();
}

public void hideLoader(){
    ProgressDialog progressDialog = new ProgressDialog(this);
    progressDialog.hide();
}


public String getStringImage(Bitmap bitmap){
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);

    byte[] imageByteArray = byteArrayOutputStream.toByteArray();
    String encodedImage = Base64.encodeToString(imageByteArray, Base64.DEFAULT);
    return encodedImage;
}

private void  requestMultiplePermissions(){
    Dexter.withActivity(this)
            .withPermissions(
                    Manifest.permission.CAMERA,
                    Manifest.permission.WRITE_EXTERNAL_STORAGE,
                    Manifest.permission.READ_EXTERNAL_STORAGE)
            .withListener(new MultiplePermissionsListener() {
                @Override
                public void onPermissionsChecked(MultiplePermissionsReport report) {
                    // check if all permissions are granted
                    if (report.areAllPermissionsGranted()) {
                        Toast.makeText(getApplicationContext(), "All permissions are granted by user!", Toast.LENGTH_SHORT).show();
                    }

                    // check for permanent denial of any permission
                    if (report.isAnyPermissionPermanentlyDenied()) {
                        // show alert dialog navigating to Settings
                        //openSettingsDialog();
                    }
                }

                @Override
                public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
                    token.continuePermissionRequest();
                }

            }).
            withErrorListener(new PermissionRequestErrorListener() {
                @Override
                public void onError(DexterError error) {
                    Toast.makeText(getApplicationContext(), "Some Error! ", Toast.LENGTH_SHORT).show();
                }
            })

            .onSameThread()
            .check();
}

我很难确定哪里出了问题。虽然我看到logcat将我指向php文件,但它并没有明确告诉我要更改什么。该页面几天前还在运行。

dude请保持一定的隐私,您域上的数据已被公开,并且可以清楚地看到您放置的所有域和内容there@PareshMayani谢谢你的提醒。我把它换成了一个伪url。但你们并没有给我一个实际的answe:)关于PHP部分,最好通过浏览器进行调试
error_reporting(E_ALL); ini_set('display_errors', 1);
require '../core/connect.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {


    $plate_number=$_POST['plate_number'];
    $vin=$_POST['vin'];
    $car_make=$_POST['car_make'];
    $car_model=$_POST['car_model'];
    $car_year=$_POST['car_year'];
    $displacement=$_POST['displacement'];
    $fuel_type=$_POST['fuel_type'];
    $transmission=$_POST['transmission'];
    $mileage=$_POST['mileage'];
    $owner_name=$_POST['owner_name'];
    $address=$_POST['address'];
    $phone_number=$_POST['phone_number'];
    $email_adress=$_POST['email_adress'];
    $facebook=$_POST['facebook'];
    $adddate = date("d/m/Y");

    $photo = $_POST['photo'];

    $id=uniqid();


    $path = "vehicle_upload/$id.jpeg";
    $finalpath = 
"http://abcde/server/api/addvehicle.php".$path;


$sql1=mysqli_query($connect,"SELECT * FROM _addvehicle WHERE 
PlateNumber='$plate_number'");
    if (mysqli_num_rows($sql1) > 0) {
            $result['success'] = "0";
            $result['message'] = "error";
            echo json_encode($result);
    }else{

        $sql = mysqli_query($connect, "INSERT IGNORE INTO 
_addvehicle(PlateNumber, Vin, Make, Model, Year, Displacement, FuelType, 
Transmission, Mileage, OwnerorCompany, HomeorCompanyAddress, ContactNumber, 
EmailAddress, FacebookID, AddDate, vehicleImage)VALUES('$plate_number','$vin','$car_make','$car_model','$car_year','$displacement','$fuel_type','$transmission','$mileage','$owner_name','$address','$phone_number','$email_adress','$facebook','$adddate','$finalpath')");

        if ($sql) {


                if (file_put_contents($path, base64_decode($photo))) {
                    $result['success'] = "1";
                    $result['message'] = "success";
                    echo json_encode($result);
                    //mysqli_close($connect);
                }

            }
    }