веб-сервисы в mvc для получения многочастных данных с Android - PullRequest
0 голосов
/ 28 июня 2018

Я хочу отправить несколько изображений в одном запросе на сервер Tomcat. для этого мне нужно написать веб-сервисы весной mvc, чтобы получить составную часть Android в Java Spring MVC.

ниже мой код Android

    public void upload() throws Exception {
    //Url of the server
    String url ="http://10.21.xxx.xxx:1010/MultiFileUpload/test";
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(url);
    MultipartEntity mpEntity = new MultipartEntity();
    //Path of the file to be uploaded
    String filepath = "";

//Add the data to the multipart entity
    File file1 = new File(filepath);
    ContentBody cbFile1 = new FileBody(file1, "image/jpeg");
mpEntity.addPart("image", cbFile);

File file2 = new File(filepath);
    ContentBody cbFile2 = new FileBody(file2, "image/jpeg");
mpEntity.addPart("image", cbFile);

File file3 = new File(filepath);
    ContentBody cbFile3 = new FileBody(file3, "image/jpeg");
mpEntity.addPart("image", cbFile);

    mpEntity.addPart("name", new StringBody("Test", Charset.forName("UTF-8")));
    mpEntity.addPart("data", new StringBody("This is test report", Charset.forName("UTF-8")));


      post.setEntity(mpEntity);
    //Execute the post request
    HttpResponse response1 = client.execute(post);
    //Get the response from the server
    HttpEntity resEntity = response1.getEntity();
    String Response= EntityUtils.toString(resEntity);
    Log.d("Response:", Response);
    //Generate the array from the response
    JSONArray jsonarray = new JSONArray("["+Response+"]");
    JSONObject jsonobject = jsonarray.getJSONObject(0);
    //Get the result variables from response
    String result = (jsonobject.getString("result"));
    String msg = (jsonobject.getString("msg"));
    //Close the connection
    client.getConnectionManager().shutdown();
}

Пожалуйста, помогите мне с веб-службами. У меня много неприятностей

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Вы можете попробовать подход выделения модели, как показано ниже

public class MultiImage implements Serializable
{
    private static final long serialVersionUID = 74458L;

    private String name;
    private String data;

    private List<MultipartFile> images;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getData() {
        return data;
    }
    public void setData(String data) {
        this.data = data;
    }
    public List<MultipartFile> getImages() {
        return images;
    }
    public void setImages(List<MultipartFile> images) {
        this.images = images;
    }
}

Ваш результат JSON может быть другими значениями POJO или String, которые я здесь сделал следующим образом

public class UploadResult {
    String result;
    String msg;


    public UploadResult(String result, String msg) {
        this.result = result;
        this.msg = msg;
    }

    public String getResult() {
        return result;
    }


    public String getMsg() {
        return msg;
    }


}

Ваша MVC / сервисная сторона будет обрабатывать этот запрос, просматривая модель и выбирая изображения, а затем передавая или сохраняя их в заранее определенном месте и упаковывая результат в ResponseEntity.

@RequestMapping(value = "/upload-image", method = RequestMethod.POST)
    public ResponseEntity uploadImages(HttpServletRequest servletRequest, @ModelAttribute MultiImage multiImage, Model model) {
        //Get the uploaded images and store them
        List<MultipartFile> images = multiImage.getImages();
        List<String> fileNames = new ArrayList<String>();
        if (null != images && images.size() > 0)
        {
            for (MultipartFile multipartFile : images) {
                String fileName = multipartFile.getOriginalFilename();
                fileNames.add(fileName);
                File imageFile = new File(servletRequest.getServletContext().getRealPath("/image"), fileName);
                try
                {
                    multipartFile.transferTo(imageFile);
                } catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
        model.addAttribute("images", images);
        UploadResult uploadResult = new UploadResult("Success","Images Uploaded");
        return ResponseEntity.Ok(uploadResult);
    }
0 голосов
/ 28 июня 2018

Ниже код будет читать изображение отправки Android / клиентом.

@RequestMapping(value = "/test", method = RequestMethod.POST)
    public ResponseEntity < String > test(HttpServletRequest request,HttpServletResponse response) {

     byte[] imageBytes = null;

     try {
      MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
      for (Entry < String, MultipartFile > entry: multipartRequest.getFileMap().entrySet()) {
       imageBytes = entry.getValue().getBytes();
      }
     } catch (Exception e) {
      e.printStackTrace();
     }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...