2014-07-24 1 views
0

Apache Http Components Fluent API를 사용하고 있습니다.아파치 Http 구성 요소 용 Fluent API를 base64로 인코딩하지 않고 HTTP POST 본문을 인코딩하는 방법은 무엇입니까?

Response postResponse = Request.Post(myUrl).bodyString(myJson, ContentType.APPLICATION_JSON).execute(); 

매우 잘 작동하지만 HTTP Body를 base64 인코딩을 사용하여 보냅니다. 나는 그것이 일반 텍스트로 본문을 보내는 것을 선호합니다. Fluent API가 base64 대신 일반 텍스트를 사용하도록 할 수 있습니까?

답변

0

저는 HC가 Request#bodyString으로 설정된 본문 내용을 BASE64로 인코딩하지 않는다고 확신합니다. 다른 문제 나 오해가있을 수도 있습니다.

1

수신하는 응용 프로그램에 버그가 있음이 밝혀졌습니다! HttpComponents는 인코딩을하지 않았습니다 (올레가 명시된대로). 수신 응용 프로그램 had a bug은받은 모든 application 모든 base64 인코딩 코드입니다. 나는 이것이 HttpComponents에 의해 수행되고 있다고 잘못 생각했다.

HttpComponents 로깅과 간단한 패킷 스니퍼 모두 콘텐츠가 wire에서 base64로 인코딩되지 않았 음을 보여줍니다.

+0

틀렸어. HC가 BASE64 컨텐츠 인코딩을 자동으로 수행하지 않습니다. – oleg

+0

내 관찰에 따르면, base64 인코딩 출력은 첫 번째 경우부터 볼 수 있지만 두 번째 인코딩은 볼 수 없습니다. 내가 보내던 수신 응용 프로그램은 base64로 인코딩 된 JSON을 첫 번째 예제에서 보았지만 두 번째 샘플에서는 표시하지 않았습니다. 또한 첫 번째 호출의 HC 소스 코드에서 base64 인코딩에 대한 명백한 호출이 표시되지 않습니다. 나는 정말로 여기서 무슨 일이 일어나고 있는지 알고 싶다. 좀 더 구체적인 것을 제공 할 수 있습니까? – Freiheit

+0

'ContentType.APPLICATION_JSON'과'ContentType.TEXT_PLAIN'의 주요 차이점은 charset입니다. 나는 @oleg이 어디에서 왔는지를 본다. 여기서는 HC가 base64 인코딩을하고 있음을 나타내는 아무것도 보이지 않지만 내가 본 것은 확실하다. http://grepcode.com/file/repo1.maven.org/maven2/org.apache.httpcomponents/httpcore/4.2.1/org/apache/http/entity/ContentType.java – Freiheit