2013-12-09 3 views
0

curl '-F'옵션에 해당하는 URL을 지정된 URL로 보내려고합니다.서버에 게시 된 HttpPost 인수가 HTTP 500 오류를 반환합니다.

이 명령은 컬을 사용하는 모습입니다 :

curl -F"optionName=cool" -F"[email protected]" http://myurl.com 

내가 아파치의 HttpPost 클래스 httpcomponents 라이브러리를 사용에서 올바른입니다 생각합니다.

나는 name = value 유형의 매개 변수를 제공합니다. optionName은 단순히 문자열이고 'file'은 드라이브에 로컬로 저장된 파일입니다 (그러므로 @myFile은 로컬 파일을 나타냅니다).

응답을 인쇄 할 경우 HTTP 500 오류가 발생합니다 ... 위의 Curl 명령을 사용할 때 서버가 응답해야하므로 무엇이 문제를 일으키는 지 잘 모르겠습니다. 아래 코드를 살펴볼 때 몇 가지 간단한 실수가 있습니까? 사용되지 않습니다

MultipartEntity entity = new MultipartEntity(); 
entity.addPart("optionName", "cool"); 
entity.addPart("file", new FileBody("/path/to/your/file")); 
.... 

post.setEntity(entity); 

편집

MultipartEntityFileBody 생성자는 소요 :

HttpPost post = new HttpPost(postUrl); 
    HttpClient httpClient = HttpClientBuilder.create().build(); 

    List<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>(); 
    nvps.add(new BasicNameValuePair(optionName, "cool")); 
    nvps.add(new BasicNameValuePair(file, "@myfile")); 

    try { 
     post.setEntity(new UrlEncodedFormEntity(nvps, "UTF-8")); 
     HttpResponse response = httpClient.execute(post); 
     // do something with response 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

답변

1

시도는 두 매개 변수와 파일 업로드를 처리하기 위해, 대신 UrlEncodedFormentityMultipartEntity를 사용하는 File, 아니 String, 그래서 :

MultipartEntityBuilder entity = MultipartEntityBuilder.create(); 
entity.addTextBody("optionName", "cool"); 
entity.addPart("file", new FileBody(new File("/path/to/your/file"))); 
.... 
post.setEntity(entity.build()); 

감사합니다. @ codeblock.

+0

수수께끼의 코드 해결, thx ssssteffff! – CODEBLACK