0

httpClient ライブラリを使用して画像 (マルチパート/フォームデータ) をアップロードしようとしています。httpPost メソッドと byteArrayRequestEntity を使用して画像をアップロードできます。以下は私が使用したコードです:

 File file = new File(imageFilePath);

 HttpClient client = new HttpClient();

 PostMethod method = new PostMethod("https://domain/link/folderId/files?access_token="+accessToken);


 method.addRequestHeader("Content-Type","multipart/form-data;boundary=AaB03x");

 String boundary = "AaB03x";

 StringBuilder builder = new StringBuilder();
 builder.append("--");
 builder.append(boundary+"\r\n");
 builder.append("Content-Disposition: form-data; name=\"file\"; filename=\"photo.jpg\"");
 builder.append("\r\n");
 builder.append("Content-Type: image/jpeg");
 builder.append("\r\n");
 builder.append("\r\n");

 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 baos.write(builder.toString().getBytes("utf-8"));
 builder.setLength(0);

 InputStream is = new FileInputStream(file);
 byte[] buffer = new byte[4096];
 int nbRead = is.read(buffer);
 while(nbRead > 0) {
     baos.write(buffer, 0, nbRead);
     nbRead = is.read(buffer);
 }

 is.close();
 builder.append("\r\n");
 builder.append("--");
 builder.append(boundary);
 builder.append("--");
 builder.append("\r\n");

 baos.write(builder.toString().getBytes("utf-8"));

 method.setRequestEntity(new ByteArrayRequestEntity(baos.toByteArray(), "multipart/form-data; boundary=\"" + boundary + "\""));


 System.out.println(method.getRequestEntity().toString());
 client.executeMethod(method);

しかし、私が取り組んでいるプロジェクトでは、Http PostMethod ではなく httpRequest を使用する必要があります。私はbasicHttpEntityEnclosingRequestで試しましたが、同じsetEntityメソッドはhttpEntityのみを受け入れます(私はByteArrayRequestEntityを使用していました)。

PostMethod の代わりに HttpRequest (またはそのサブタイプ) を使用するようにコードを変更する方法を教えてください。

4

1 に答える 1

0

apache-mime libraryメッセージ付きの画像をWebサーバーに投稿するのに利用しました。

私の本番環境のコードは次のとおりです。

public String postDataCreation(final String url, final String xmlQuery,final String path){

        final StringBuilder sa  = new StringBuilder();

        final File file1 = new File(path);




        Thread t2 = new Thread(new Runnable(){


            public void run() {

                try
                {
                     HttpClient client = new DefaultHttpClient();
                     HttpPost post = new HttpPost(url);
                     FileBody bin1 = new FileBody(file1);

                     MultipartEntity reqEntity = new MultipartEntity();

                     reqEntity.addPart("dish_photo", bin1);

                     reqEntity.addPart("xml", new StringBody(xmlQuery));

                     post.setEntity(reqEntity);

                     HttpResponse response = client.execute(post);

                     HttpEntity entity = response.getEntity();
                        InputStream i = entity.getContent();

                        Log.d("Vivek", i.toString());
                        InputStreamReader isr = new InputStreamReader(i);

                        BufferedReader br = new BufferedReader(isr);

                        String s = null;


                        while ((s = br.readLine()) != null) {

                            Log.d("YumZing", s);
                            sa.append(s);
                        }


                        Log.d("Check Now",sa+"");



                }
                catch (Exception ex){
                     Log.e("Debug", "error: " + ex.getMessage(), ex);
                }

            }





        });

        t2.start();

        try {
            t2.join();
        } catch (InterruptedException e) {

            e.printStackTrace();
        }

        System.out.println("Getting from Post Data Method "+sa.toString());
        return sa.toString();
    }
于 2012-11-28T11:11:26.993 に答える