0

Java REST Web サービスを学習しており、Android で画像ファイルをアップロードしようとしています。以下は、クライアントとサーバーのコードです。HTTP ステータス コード 415 を取得しています。リクエスト エンティティが、リクエストされたメソッドのリクエストされたリソースでサポートされていない形式であるため、サーバーはこのリクエストを拒否しました。何が間違っている可能性がありますか?ありがとうございました。

Android クライアント コードは次のようになります。

HttpClient httpclient = new DefaultHttpClient();

        FileBody fileContent = new FileBody(new File(
                Environment.getExternalStorageDirectory() + File.separator
                        + "Pictures/" + IMAGE_FILE_NAME));

        MultipartEntity multipartEntity = new MultipartEntity();
        multipartEntity.addPart("file", fileContent);

        HttpResponse response = null;
        try {       
                HttpPost httppost = new HttpPost(url);
                httppost.setEntity(multipartEntity);
                response = httpclient.execute(httppost);

        } catch (Exception e) {
            Log.e(TAG, e.getLocalizedMessage(), e);
        }

サーバーコードは次のようになります。

    @POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
        @FormDataParam("file") InputStream uploadedInputStream,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {

    String uploadedFileLocation = "C://uploadedFiles/"
            + fileDetail.getFileName();

    // save it
    saveToFile(uploadedInputStream, uploadedFileLocation);

    String output = "File uploaded via Jersey based RESTFul Webservice to: "
            + uploadedFileLocation;

    return Response.status(200).entity(output).build();

}
4

1 に答える 1

0

私はついに問題を解決することができました。以下は動作するコードです。ありがとうございました。

Bitmap bitmap = BitmapFactory.decodeFile(Environment
                .getExternalStorageDirectory()
                + File.separator
                + "Pictures/" + IMAGE_FILE_NAME);

        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
        byte[] byte_arr = stream.toByteArray();

        ByteArrayBody fileBody = new ByteArrayBody(byte_arr,
                "imageFileName.jpg");

        MultipartEntity multipartEntity = new MultipartEntity(
                HttpMultipartMode.BROWSER_COMPATIBLE);

        multipartEntity.addPart("file", fileBody);

        HttpClient httpclient = new DefaultHttpClient();
        HttpResponse response = null;
            try {

                HttpPost httppost = new HttpPost(url);
                httppost.setEntity(multipartEntity);
                response = httpclient.execute(httppost);


               } catch (Exception e) {
            Log.e(TAG, e.getLocalizedMessage(), e);
            }
于 2013-10-02T13:10:39.753 に答える