получение нулевого ответа при загрузке изображения на удаленный сервер с помощью Volley в android studio - java - PullRequest
0 голосов
/ 14 июля 2020

Ниже представлен основной код Фрагмента

    public class UploadPhotoo extends Fragment {
    
        TextView upload_id_tv, Image_Upload_txt;
        ImageView camera_uploadPhoto,Image_main, gallery_uploadPhoto,delete_from_gallery;
        Bitmap photo;
        private static final int CAMERA_REQUEST = 1000;
        private static final int GALLERY_REQUEST = 2000;
        String imageBitmaped;
        private Method method;
        String encodedImage;
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View rootView =  inflater.inflate(R.layout.fragment_upload_photoo, container, false);
    
     gallery_uploadPhoto = rootView.findViewById(R.id.upload_from_gallery);
            gallery_uploadPhoto.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent GalleryIntent = new Intent(Intent.ACTION_PICK);
                    GalleryIntent.setType("image/*");
    //                GalleryIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivityForResult(GalleryIntent, GALLERY_REQUEST);
                }
            });

 return rootView;
    }


    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
//        if (requestCode == CAMERA_REQUEST ){
//            photo =(Bitmap) data.getExtras().get("data");
//            Image_main.setImageBitmap(photo);
//        }
//        else if(resultCode == Activity.RESULT_OK && requestCode == GALLERY_REQUEST
//                                        && data != null && data.getData() != null) {
//            photo =(Bitmap) data.getExtras().get("data");

            if(resultCode == Activity.RESULT_OK)
                switch (requestCode){
                    case GALLERY_REQUEST:
                        Uri selectedImage = data.getData();

                        try {
                            InputStream inputStream = getActivity().getContentResolver().openInputStream(selectedImage);
                            photo = BitmapFactory.decodeStream(inputStream);
                            Image_main.setImageBitmap(photo);
                            getStringImage(photo);
                            sendImageToServer();

                            Image_Upload_txt.setVisibility(View.VISIBLE);
                        } catch (IOException e) {
                            Log.i("TAG", "Some exception " + e);
                        }
                        break;
                    case CAMERA_REQUEST:
                        photo =(Bitmap) data.getExtras().get("data");
                        Image_main.setImageBitmap(photo);
                        Image_Upload_txt.setVisibility(View.VISIBLE);
                        break;
                }
    }

    //to get image bitmap
    private void getStringImage(Bitmap bmp) {
        Log.e("TAG","Bitmap called");
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        bmp.compress(Bitmap.CompressFormat.JPEG,100,byteArrayOutputStream);
        byte[] imageByte = byteArrayOutputStream.toByteArray();
        encodedImage = android.util.Base64.encodeToString(imageByte,Base64.DEFAULT);
    }

    //use volley
    private void sendImageToServer()
    {
        Log.e("TAG","sendImageToServer called");
        String sid = method.pref.getString(method.profileId,null);
String URL ="https://starsacademies.com/starapi/starapi/profile_upload";

        StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.e("Response", response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getContext(),error.toString(),Toast.LENGTH_SHORT).show();
                Log.e("TAG","ERROR: "+error.toString());
            }
        })
        {
            @Override
            protected Map<String, String> getParams()  throws AuthFailureError{
//                String image = getStringImage(photo);
                Map<String,String> params = new HashMap<String, String>();
                    params.put("userfile", encodedImage);
                    params.put("student_id", sid);

                    Log.e("TAG: userfile",encodedImage );
                    Log.e("TAG: student_id",sid);
                return params;
            }
        };

        stringRequest.setRetryPolicy(new RetryPolicy() {
            @Override
            public int getCurrentTimeout() {
                return 40000;
            }

            @Override
            public int getCurrentRetryCount() {
                return 40000;
            }

            @Override
            public void retry(VolleyError error) throws VolleyError {

            }
        });
        RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
        requestQueue.add(stringRequest);  
   }

}

Информация об API:

API: https://starsacademies.com/starapi/starapi/profile_upload
Method: POST
PARAMETERS:
userfile (File), 
student_id (String)

После успешного загрузив, вы можете получить изображение из Get API.

API: https://starsacademies.com/starapi/starapi/get_student_image/student_id/1
Eg:- https://starsacademies.com/starapi/starapi/get_student_image/2448/1

** Примечание. API отлично работает в почтальоне.

введите описание изображения здесь

Но когда я пытаюсь запустить в студии android, используя приведенный выше код. Это даст мне следующие ошибки. **

     D/Volley: [6174] BasicNetwork.logSlowRequests: HTTP response for request=<[ ] https://starsacademies.com/starapi/starapi/profile_upload 0x1ce01b5c NORMAL 1> [lifetime=5870], [size=196], [rc=200], [retryCount=40000]
2020-07-14 07:50:21.644 31898-31898/com.app.sfaelearning E/Response: {
        "UPLAODIMAGE": [
            {
                "success": 0,
                "data": "<p>You did not select a file to upload.</p>",
                "message": "profile image upload failed"
            }
        ]
    }

Похоже, что приведенный выше код не может подобрать изображение. Я не знаю, что происходит, но я следил за множеством туториалов на YouTube, и они используют тот же код ... Помогите мне, пожалуйста .. это уже занимает у меня 3-4 дня ...

...