URLEncodedUtils.parse(HttpEntity) not working if Content-Encoding is not 
specified
----------------------------------------------------------------------------------

                 Key: HTTPCLIENT-1175
                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1175
             Project: HttpComponents HttpClient
          Issue Type: Bug
          Components: HttpClient
    Affects Versions: 4.2 Beta1, 4.1.3
            Reporter: Hendy Irawan


The code below does not work :

        /**
         * Sets the authCode received from Facebook and exchanges it with the 
access token.
         * @param authCode
         * @throws IOException 
         * @throws ClientProtocolException 
         */
        public void setFacebookAuthCode(String authCode) throws 
ClientProtocolException, IOException {
                log.info("Retrieving access token using authCode {}", authCode);
                URI accessTokenUri = facebookAuth.getAccessTokenUri(authCode);
                DefaultHttpClient client = new DefaultHttpClient();
                HttpGet accessTokenReq = new HttpGet(accessTokenUri);
                HttpResponse response = client.execute(accessTokenReq);
                if (response.getStatusLine().getStatusCode() != 200)
                        throw new IOException(String.format("GET %s throws HTTP 
Error %d: %s",
                                        accessTokenUri, 
response.getStatusLine().getStatusCode(), 
response.getStatusLine().getReasonPhrase()));
                // Probably due to non-existing Content-Encoding, this one is 
not working:
                List<NameValuePair> data = 
URLEncodedUtils.parse(response.getEntity());
                setFbAccessToken(data.get(0).getValue());
                
                log.info("Access token received, redirecting to Post Status 
page");
                ExternalContext external = 
FacesContext.getCurrentInstance().getExternalContext();
                
external.redirect(external.encodeActionURL("/faces/post.xhtml"));
        }

I have to use a workaround :

                String body = IOUtils.toString( 
response.getEntity().getContent() );
                Scanner scanner = new 
Scanner(response.getEntity().getContent());
                ArrayList<NameValuePair> data = new ArrayList<NameValuePair>();
                URLEncodedUtils.parse(data, scanner, "UTF-8");

Expected behavior :

Should either default to UTF-8 (recommended) or make it an explicit parameter.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to