2011-01-18 5 views
12

는 내가 같이 매우 일반적인 다중 물건을하고 아파치 HttpClient를 4를 사용하고 있습니다 :MultipartForm 요청의 내용을 보려면 어떻게해야합니까?

val entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
entity.addPart("filename", new FileBody(new File(fileName), "application/zip").asInstanceOf[ContentBody]) 
entity.addPart("shared", new StringBody(sharedValue, "text/plain", Charset.forName("UTF-8"))); 

val post = new HttpPost(uploadUrl); 
post.setEntity(entity); 

내가 그것을 보내기 전에 엔티티의 내용 (무엇이든 또는 포스트를)보고 싶어요. 그러나 구체적인 방법은 구현되지 않았습니다.

entity.getContent() // not defined for MultipartEntity 

게시 할 항목을 어떻게 확인할 수 있습니까?

+0

org.apache.http.entity.mime.MultipartEntity 같은 시도 할 수 있습니다 - HTTP - 문서에서의 getContent()를 포함 //hc.apache .org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html –

+4

예,이 기능은 구현되지 않았습니다. 전체 다중 파트 양식 요청이. 자 본. 내용의 합계와 다르기 때.에 NotImplementedException – asdasd

답변

0

콘텐츠를 모름? 하지만 을 제공하여 StringBody을 작성하고 있습니다. 그러면 sharedValue과 어떻게 다를 수 있습니까?

+2

을 제공합니다. 데이터에 대한 theres 래퍼, 그리고 내가 똥을 모두보고 싶어 – asdasd

+1

또 다른 일반적인 사용 사례 : 자동화 된 로깅입니다. 나는 HttpRequestBase를 HttpEntity를 추출한 로깅 인프라 스트럭쳐에 보내는 것만으로 모든 인터랙션을 로깅하고 로깅하기 때문에이 문제가 발생했다. –

16

사용 org.apache.http.entity.mime.MultipartEntitywriteTo(java.io.OutputStream) 방법은 java.io.OutputStream에 내용을 작성하고 다음 String 또는 byte[] 해당 스트림을 변환 :

// import java.io.ByteArrayOutputStream; 
// import org.apache.http.entity.mime.MultipartEntity; 
// ... 
// MultipartEntity entity = ...; 
// ... 

ByteArrayOutputStream out = new ByteArrayOutputStream(entity.getContentLength()); 

// write content to stream 
entity.writeTo(out); 

// either convert stream to string 
String string = out.toString(); 

// or convert stream to bytes 
byte[] bytes = out.toByteArray(); 

참고 : 다중 엔티티 기가 바이트보다 작은, 최대 모두이 유일한 작품 Java에서 바이트 배열의 크기이며 메모리로 읽을 수있을만큼 작습니다.

내가 코드를 따라 멀티 파트 요청을 인쇄 한
0

는, 당신은

ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 

entity.writeTo(bytes); 

String content = bytes.toString(); 

Log.e("MultiPartEntityRequest:",content); 
+0

이것은 기존 답변보다 더 많은 정보를 추가하지는 않지만 특히 [[accepted answer] (http://stackoverflow.com/a/10408206). –

+0

이것은 더 읽기 쉽고 눈이 쉬웠습니다. 나는 당신이 서둘러 이해할 때 간결하게 읽을 수있는 코드가 특별히 간결해질 때 감사히 생각합니다. – killjoy

관련 문제