HTTP의 다중 부분/양식 데이터 인코딩은 일반적으로 파일 업로드에 사용되므로 클라이언트가 텍스트와 데이터를 모두 보낼 수 있습니다. 단일 요청의 이진 데이터. Apache Commons HttpClient 3.x는 이 기능을 지원했지만 버전 4.0에서는 제거되었습니다. 이 기사에서는 멀티파트/양식 데이터 POST 요청을 활성화하는 대체 Java 라이브러리를 살펴봅니다.
HttpClient 프로젝트에 접근하고 있음에도 불구하고 멀티파트 지원을 다시 구현하려는 알려진 노력은 없습니다. 따라서 개발자는 멀티파트/양식 데이터 요구 사항에 맞는 대체 솔루션을 찾아야 합니다.
솔루션
현재 안정 버전인 HttpClient 4.x는 보다 현대적인 솔루션을 제공합니다. 멀티파트 요청을 처리하기 위한 API입니다. 다음은 업데이트된 API를 사용하는 예입니다.
CloseableHttpClient httpClient = HttpClients.createDefault(); HttpPost uploadFile = new HttpPost("..."); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.addTextBody("field1", "yes", ContentType.TEXT_PLAIN); File f = new File("[/path/to/upload]"); builder.addBinaryBody( "file", new FileInputStream(f), ContentType.APPLICATION_OCTET_STREAM, f.getName() ); HttpEntity multipart = builder.build(); uploadFile.setEntity(multipart); CloseableHttpResponse response = httpClient.execute(uploadFile); HttpEntity responseEntity = response.getEntity();
여전히 HttpClient 4.0(권장하지 않음)을 사용하는 개발자의 경우 다음 코드 조각은 더 이상 사용되지 않는 API를 사용합니다.
HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); FileBody bin = new FileBody(new File(fileName)); StringBody comment = new StringBody("Filename: " + fileName); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("bin", bin); reqEntity.addPart("comment", comment); httppost.setEntity(reqEntity); HttpResponse response = httpclient.execute(httppost); HttpEntity resEntity = response.getEntity();
다른 Java 라이브러리 multipart/form-data POST 요청 지원:
위 내용은 Java에서 Multipart/Form-Data POST 요청을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!