Передача данных на сервер

Рейтинг: 0Ответов: 1Опубликовано: 04.05.2015

При загрузке картинки на сервер параметр uid не хочет передаваться.
Как исправить?

public class LoadActivity extends Activity {   

    private TextView txtuid;

    @SuppressLint("NewApi")
        ProgressDialog prgDialog;
        String encodedString;
        String  KEY_UID;
        SessionManager session;
        RequestParams params = new RequestParams();
        SQLiteHandler db;
        String imgPath, fileName, uid;
        Bitmap bitmap;
        private static int RESULT_LOAD_IMG = 1;

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

            txtuid = (TextView) findViewById(R.id.uid);
            // SqLite database handler
            db = new SQLiteHandler(getApplicationContext());//

            // session manager
            session = new SessionManager(getApplicationContext());//
            HashMap<String, String> user = db.getUserDetails();


            String uid = user.get("uid");

            // Displaying the user details on the screen
            txtuid.setText(uid);
    prgDialog = new ProgressDialog(this);
            // Set Cancelable as False
            prgDialog.setCancelable(false);
        }

        public void loadImagefromGallery(View view) {
            // Create intent to Open Image applications like Gallery, Google Photos
            Intent galleryIntent = new Intent(Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            // Start the Intent
            startActivityForResult(galleryIntent, RESULT_LOAD_IMG);
        }

        // When Image is selected from Gallery
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            try {
                // When an Image is picked
                if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK
                        && null != data) {
                    // Get the Image from data

                    Uri selectedImage = data.getData();
                    String[] filePathColumn = { MediaStore.Images.Media.DATA };

                    // Get the cursor
                    Cursor cursor = getContentResolver().query(selectedImage,
                            filePathColumn, null, null, null);
                    // Move to first row
                    cursor.moveToFirst();

                    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                    imgPath = cursor.getString(columnIndex);
                    cursor.close();
                    ImageView imgView = (ImageView) findViewById(R.id.imgView);
                    // Set the Image in ImageView
                    imgView.setImageBitmap(BitmapFactory
                            .decodeFile(imgPath));
                    // Get the Image's file name
                    String fileNameSegments[] = imgPath.split("/");
                    fileName = fileNameSegments[fileNameSegments.length - 1];
                    // Put file name in Async Http Post Param which will used in Php web app
                    params.put("filename", fileName);

                } else {
                    Toast.makeText(this, "You haven't picked Image",
                            Toast.LENGTH_LONG).show();
                }
            } catch (Exception e) {
                Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG)
                        .show();
            }

        }

        public void GoBackmain(View view) {
            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);  
        }


        // When Upload button is clicked
        public void uploadImage(View v) {
            // When Image is selected from Gallery
            if (imgPath != null && !imgPath.isEmpty()) {
                prgDialog.setMessage("Converting Image to Binary Data");
                prgDialog.show();
                // Convert image to String using Base64
                encodeImagetoString();
            // When Image is not selected from Gallery
            } else {
                Toast.makeText(
                        getApplicationContext(),
                        "You must select image from gallery before you try to upload",
                        Toast.LENGTH_LONG).show();
            }
        }

        // AsyncTask - To convert Image to String
        public void encodeImagetoString() {
            new AsyncTask<Void, Void, String>() {

                protected void onPreExecute() {

                };

                @Override
                protected String doInBackground(Void... params) {
                    BitmapFactory.Options options = null;
                    options = new BitmapFactory.Options();
                    options.inSampleSize = 3;
                    bitmap = BitmapFactory.decodeFile(imgPath,
                            options);
                    ByteArrayOutputStream stream = new ByteArrayOutputStream();
                    // Must compress the Image to reduce image size to make upload easy
                    bitmap.compress(Bitmap.CompressFormat.PNG, 50, stream); 
                    byte[] byte_arr = stream.toByteArray();
                    // Encode Image to String
                    encodedString = Base64.encodeToString(byte_arr, 0);

                    return "";

                }

                @Override
                protected void onPostExecute(String msg) {
                    prgDialog.setMessage("Вызываем ПХП");
                    // Put converted Image string into Async Http Post param
                    params.put("image", encodedString);

                    // Trigger Image upload
                    triggerImageUpload();
                }
            }.execute(null, null, null);
        }

        public void triggerImageUpload() {
            makeHTTPCall();
        }





        // Make Http call to upload Image to Php server
        public void makeHTTPCall() {

            params.put("uid", uid);
            prgDialog.setMessage("Подключаем ПХП");     
            AsyncHttpClient client = new AsyncHttpClient();
            // Don't forget to change the IP address to your LAN address. Port no as well.
            client.post("http://logreg.tioo.ru/include/imgupload/upload_image.php",
                    params, new AsyncHttpResponseHandler() {

                        // When the response returned by REST has Http
                        // response code '200'
                        @Override
                        public void onSuccess(String response) {
                            // Hide Progress Dialog
                            prgDialog.hide();
                            Toast.makeText(getApplicationContext(), response,
                                    Toast.LENGTH_LONG).show();
                        }

                        // When the response returned by REST has Http
                        // response code other than '200' such as '404',
                        // '500' or '403' etc
                        @Override
                        public void onFailure(int statusCode, Throwable error,
                                String content) {
                            // Hide Progress Dialog
                            prgDialog.hide();
                            // When Http response code is '404'
                            if (statusCode == 404) {
                                Toast.makeText(getApplicationContext(),
                                        "Requested resource not found",
                                        Toast.LENGTH_LONG).show();
                            }
                            // When Http response code is '500'
                            else if (statusCode == 500) {
                                Toast.makeText(getApplicationContext(),
                                        "Something went wrong at server end",
                                        Toast.LENGTH_LONG).show();
                            }
                            // When Http response code other than 404, 500
                            else {
                                Toast.makeText(
                                        getApplicationContext(),
                                        "Error Occured \n Most Common Error: \n1. Device not connected to Internet\n2. Web App is not deployed in App server\n3. App server is not running\n HTTP Status code : "
                                                + statusCode, Toast.LENGTH_LONG)
                                        .show();
                            }
                        }
                    });
        }

        @Override
        protected void onDestroy() {
            // TODO Auto-generated method stub
            super.onDestroy();
            // Dismiss the progress bar when application is closed
            if (prgDialog != null) {
                prgDialog.dismiss();
            }

        }
}

Ответы

▲ 3

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

И по делу: вверху объявлена глобальная переменная

String imgPath, fileName, uid;

в которую никогда ничего не записывается. А записывается в локальную переменную с таким же именем.

String uid = user.get("uid");

И дальше используется глобальная переменная, в которую ничего никогда не записывается.

params.put("uid", uid);