문제

apaches httpclient와 함께 이와 같은 GET 요청과 함께 HTML 문자열을 보내고 싶습니다.

http://sample.com/?html=<html><head>...

이것은 현재 작동하지 않습니다. 인코딩 문제라고 생각합니다. 그렇게하는 방법이 있습니까?

method.setQueryString(new NameValuePair[] {new NameValuePair("report", "<html>....")});
client.executeMethod(method)

이것은 실패합니다 org.apache.commons.httpclient.NoHttpResponseException: The server localhost failed to respond. 내가 교체하면 "<html>" "테스트 .."에 의해 잘 작동합니다.

편집하다

인코딩 후 URL 길이의 문제가되며 서버는 긴 URL을 제외하고는 그렇지 않습니다. 우편으로 보내면 문제가 해결됩니다.

도움이 되었습니까?

해결책

URL 인코딩을 사용하여 먼저 HTML 문자열을 포맷하십시오.

String yourHtmlString = java.net.URLEncoder.encode("<html>....");
method.setQueryString(new NameValuePair[] {new NameValuePair("report", yourHtmlString)});

다른 팁

주어진 콘텐츠의 길이에 따라 Base64 인코딩 및 아마도 압축을 사용하기 전에는 다음과 같습니다.

RFC 2068 상태 : 일부 이전 클라이언트 또는 프록시 구현이 이러한 길이를 제대로 지원하지 않을 수 있으므로 서버는 255 바이트를 초과하는 URI 길이에 따라 조심해야합니다. URL 길이의 사양은 최소 또는 최대 URL 길이를 지시하지 않지만 구현은 브라우저에 따라 다릅니다. Windows : Opera는 ~ 4050 문자를 지원하며, 예를 들어 4.0+는 정확히 2083 자, Netscape 3-> 4.78 지원을 지원하기 전에 최대 8192 자까지 지원하며 Netscape 6은 시작시 오류를 일으키기 전에 ~ 2000을 지원합니다.

HTML 문자열에는 URL 인코딩 해야하는 문자가 포함되어 있습니다. 읽다 여기.

인코딩을 할 수 있습니다 urlutils.simpleformurlencode

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top