2014-09-23 2 views
2

내가 MultipartEntityBuilder : 콘텐츠 유형 및 콘텐츠 전송

내 브라우저 전용 org.apache.http.entity.mime.MultipartEntityBuilder

를 사용하여 다중/폼 데이터를 POST 요청에 내 브라우저 동작을 모방하기 위해 노력하고있어 생략 Content-Disposition을 전송하지만 Content-Type 또는 Content-Transfer-Encoding 헤더는 전송하지 않습니다. 나는 MultipartEntityBuilder.addPart()와 addTextBody를 (사용하려고)하지만 둘은 기본적으로 그 헤더를 추가

내가 (내 크롬 브라우저가 무엇을) 원하는 :

POST .../some.jsp HTTP/1.1 
Host: ... 
Connection: keep-alive 
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary6tcnkxC7txvqE5Xl 


------WebKitFormBoundary6tcnkxC7txvqE5Xl 
Content-Disposition: form-data; name="merkmal" 

5 

나는 MultipartEntityBuilder

에서 얻을 무엇
POST.../some.jsp HTTP/1.1 
Host: ... 
Content-Type: multipart/form-data; boundary=m9Zb2QD-QaH-j-HqgGQfI8KwDkToz17ULYkZ 

--m9Zb2QD-QaH-j-HqgGQfI8KwDkToz17ULYkZ 
Content-Disposition: form-data; name="merkmal" 
Content-Type: text/plain; charset=ISO-8859-1 
Content-Transfer-Encoding: 8bit 

5 

왜 지정된 서버 이름 = "merkmal"후 모든 (머리글 포함) merkmal의 값이라고 생각?. 다른 가능한 이유 : 전체 요청이 어떻게 든 (특히 개행) 잘못된 인코딩을 가질 수 있습니까?

답변

10

괜찮음 - 강렬한 googeling가 결국 대답을 냈습니다.

1) 분명히 "Content-Transfer-Encoding"헤더를 사용하지 않는 서버가 있습니다.

2) 다음과 같이 사용된다 HttpComponents에서 브라우저 호환성 모드가 있습니다 : 호환성 코드를 사용

MultipartEntityBuilder uploadEntityBuilder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.BROWSER_COMPATIBLE); 

, 원치 않는 헤더 (콘텐츠 전송 인코딩 및 콘텐츠 형식) 중 하나를 사용하지 않는 모두 더 길게!

언젠가 나 같은 가난한 잔디를 도울 수 있기를 바랍니다.)

+0

감사합니다.) thanks – edutesoy