2011-10-10 11 views
5

"カール-F" Javaの同等

  HttpClient httpClient = new DefaultHttpClient();   

    HttpPost httpPost = new HttpPost(_URL); 

    File file = new File(PATH); 

      MultipartEntity mpEntity = new MultipartEntity(); 
     ContentBody cbFile = new FileBody(file, "bin"); 
     mpEntity.addPart("userfile", cbFile); 

     httpPost.setEntity(mpEntity); 

    HttpResponse response = httpClient.execute(httpPost); 
    InputStream instream = response.getEntity().getContent(); 
+0

あなたの問題は何ですか?そして少しのmroeコードが参考になるでしょう。例えば 'httpPost'とは何ですか? –

+0

javaプログラムを使用してcurlコマンド(すでにLinux端末コマンド)を送信しようとしています。私はマルチパートを試しましたが、ファイルをアップロードしたりダウンロードしたりする必要はありません。離れたリポジトリ間の転送です。 – amine

+0

あなたのJavaコードは不完全です。そしてなぜそれがうまくいかないのか分からない。だからもっとコードを投稿してください(そして、はい、私たちは皆、 'カール'が何か....ということを知っています)。例えば。ポストメソッドを呼び出さないので、上記のフラグメントは明らかに機能しません。少なくともHttpURLConnectionが必要です。 –

答えて

1

私はこの問題を昨日見つけました。ここでは、Apache httpライブラリを使用するソリューションです。

package curldashf; 

import java.io.File; 
import java.io.IOException; 
import org.apache.commons.io.FileUtils; 
import org.apache.http.HttpResponse; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.fluent.Request; 
import org.apache.http.entity.mime.MultipartEntity; 
import org.apache.http.entity.mime.content.ByteArrayBody; 
import org.apache.http.util.EntityUtils; 

public class CurlDashF 
{ 
    public static void main(String[] args) throws ClientProtocolException, IOException 
    { 
     String filePath = "file_path"; 
     String url = "http://localhost/files"; 
     File file = new File(filePath); 
     MultipartEntity entity = new MultipartEntity(); 
     entity.addPart("file", new FileBody(file)); 
     HttpResponse returnResponse = Request.Post(url) 
      .body(entity) 
      .execute().returnResponse(); 
     System.out.println("Response status: " + returnResponse.getStatusLine().getStatusCode()); 
     System.out.println(EntityUtils.toString(returnResponse.getEntity())); 
    } 
} 

必要に応じてfilePathとurlを設定します。ファイル以外のものを使用している場合は、FileBodyをByteArrayBody、InputStreamBodyまたはStringBodyに置き換えることができます。私の特定の状況では、ByteArrayBodyが呼び出されていますが、上記のコードはファイルに対して機能します。