загрузить фотографию с Android на скрепку rails

#android #ruby-on-rails #image #upload #paperclip

#Android #ruby-on-rails #изображение #загрузка #скрепка

Вопрос:

в чем дело, хотя это, кажется, старый вопрос, я просто не могу использовать ни один из ответов! Мне нужно загрузить фотографию с Android на rails 4, используя последнюю версию скрепки. это то, что я пытался сделать:

** Я знаю, что StringBody устарел, но я не знаю, что использовать вместо этого. Я также не знаю, является ли то, что я пытаюсь сделать, хорошим вариантом. я делаю это впервые, и я полностью потерян.

 public void onClick(View v) {

                Thread t = new Thread() {

                    public void run() {

                        Intent i = getIntent();
                        String adCategory = i.getStringExtra("categoryId");
                        String adTitle = i.getStringExtra("title");
                        String adPrice = i.getStringExtra("price");
                        String adDescription = i.getStringExtra("description");

                        int catId = Integer.parseInt(adCategory);

                        Looper.prepare();
                        HttpClient client = new DefaultHttpClient();
                        HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
                        HttpContext context = new BasicHttpContext();
                        HttpResponse response;
                        JSONObject json = new JSONObject();

                        try {
                            HttpPost post = new HttpPost("http://192.168.0.16:3000/ads");

                            json.put("category_id", catId);
                            json.put("title", adTitle);
                            json.put("price", adPrice);
                            json.put("description", adDescription);

                            MultipartEntityBuilder builder = MultipartEntityBuilder.create();
                            builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
                            ByteArrayOutputStream bos = new ByteArrayOutputStream();
                            bitmap.compress(CompressFormat.JPEG, 100, bos);
                            byte[] data = bos.toByteArray();
                            String file = Base64.encodeBytes(data);
                            builder.addPart("picture", new StringBody(file));
                            builder.addPart("json", new StringBody(json.toString()));
                            HttpEntity entity = builder.build();

                            post.setEntity(entity);
                            response = client.execute(post);

                            if(response!=null){
                                InputStream in = response.getEntity().getContent(); //Get the data in the entity
                            }

                        } catch(Exception e) {
                            e.printStackTrace();
                        }

                            Looper.loop();
                        }
                    };

                    t.start();      

                Intent intent = new Intent(context, NewAdActivity.class);
                startActivity(intent);
            }
        });