1

I tried a lot of stuff but nothing worked for me. Android volley plus for multipart data, Retrofit 2.0 but nothing works. I have a web service URL like www.---.com/business_signup/ Here's my code:

public class MainActivity extends AppCompatActivity {

    public static final int PICK_IMAGE = 100;

    Service service;

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

        Button btn = (Button) findViewById(R.id.btn_upload);

        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(10, TimeUnit.SECONDS)
                .readTimeout(10, TimeUnit.SECONDS)
                .writeTimeout(10, TimeUnit.SECONDS)
                .addInterceptor(interceptor).build();

        // Change base URL to your upload server URL.
        service = new Retrofit.Builder().baseUrl("http://www.app.com/").client(client).build()
//http://www.app.com/business_signup/
                .create(Service.class);

        if (btn != null) {
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {


                    Intent intent = new Intent();
                    intent.setType("image/jpeg");
                    intent.setAction(Intent.ACTION_GET_CONTENT);
                    startActivityForResult(Intent.createChooser(intent, "Select Image"), PICK_IMAGE);             }
            });
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == PICK_IMAGE && resultCode == Activity.RESULT_OK) {

            android.net.Uri selectedImage = data.getData();
            String[] filePathColumn = {MediaStore.Images.Media.DATA};
            android.database.Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
            if (cursor == null)
                return;

            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String filePath = cursor.getString(columnIndex);
            cursor.close();

            File file = new File(filePath);

            RequestBody reqFile = RequestBody.create(MediaType.parse("image/jpeg"), file);
            MultipartBody.Part body = MultipartBody.Part.createFormData("businessLogo", file.getName(), reqFile);
            RequestBody name = RequestBody.create(MultipartBody.FORM, "emailfgdf");

          Log.d("THIS", data.getData().getPath());



            retrofit2.Call<okhttp3.ResponseBody> req = service.postImage( body,name);
            req.enqueue(new Callback<ResponseBody>() {
                @Override
                public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                    Toast.makeText(MainActivity.this, "success" + response.toString(), Toast.LENGTH_SHORT).show();


                }

                @Override
                public void onFailure(Call<ResponseBody> call, Throwable t) {

                    Toast.makeText(MainActivity.this, "error" , Toast.LENGTH_SHORT).show();

                    t.printStackTrace();
                }
            });
        }
    }
}

Service.java

interface Service {

    @Multipart
    @POST("/business_signup/")
    Call<ResponseBody> postImage(@Part MultipartBody.Part image,
     @Part("email") RequestBody name


                            );
}

enter image description here

I need help, please.

M.Hamza
  • 63
  • 1
  • 8

0 Answers0