hc-httpclient-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eugeny N Dzhurinsky <b...@redwerk.com>
Subject wrong cookies passed back to httpclient?
Date Wed, 12 Jul 2006 10:18:53 GMT
Hello again!
I still fighting with weird situation while same page is displayed well using
browser, but with HttpClient error 500 is returned.

Here is my unit test below:

import java.io.IOException;

import junit.framework.Assert;
import junit.framework.TestCase;

import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.HttpVersion;
import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.URIException;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class HTTPClientTest extends TestCase {

    private static Logger log = Logger.getLogger(HTTPClientTest.class);

    HttpClient client;

    GetMethod get;

    String url;

    protected void setUp() throws Exception {
        client = new HttpClient();
        url = "http://atlanta.familypages.info/out-35.html";
        BasicConfigurator.configure();
        log.setLevel(Level.DEBUG);
    }

    public void testResultcode() {
        try {
            URI uri = getURI(url);
            get = new GetMethod();
            get.setURI(uri);
            setMethodParameters();
            client.executeMethod(get);
            get = handleRedirects(20);
            Assert.assertEquals(HttpStatus.SC_OK, get.getStatusCode());
        } catch (HttpException e) {
            e.printStackTrace(System.out);
        } catch (IOException e) {
            e.printStackTrace(System.out);
        }
    }

    private GetMethod handleRedirects(int redirects) throws URIException,
            IOException {
        switch (get.getStatusCode()) {
        case HttpStatus.SC_MOVED_PERMANENTLY:
        case HttpStatus.SC_MOVED_TEMPORARILY:
        case HttpStatus.SC_SEE_OTHER:
        case HttpStatus.SC_TEMPORARY_REDIRECT:
            Header[] headers = get.getResponseHeaders("location");
            if (headers != null && headers.length > 0) {
                String location = customEscape(headers[headers.length - 1]
                        .getValue());
                if (location.indexOf("://") == -1) {
                    URI uri = new URI(get.getURI(), location, location
                            .indexOf("%") > -1);
                    location = uri.getURI();
                }
                if (log.isDebugEnabled())
                    log.debug("Handling redirect for " + location + " level "
                            + redirects);
                get.releaseConnection();
                get = new GetMethod();
                get.setURI(getURI(location));
                setMethodParameters();
                client.executeMethod(get);
                if (redirects > 0)
                    handleRedirects(redirects - 1);
            }
        }
        return get;
    }

    private void setMethodParameters() {
        get.setFollowRedirects(false);
        HttpMethodParams p = get.getParams();
        p.setVersion(new HttpVersion(1, 1));
        p.setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
    }

    private URI getURI(String _url) throws URIException {
        _url = customEscape(_url);
        return new URI(_url, _url.indexOf('%') != -1);
    }

    private String customEscape(String _url) {
        String _internal_url = _url.indexOf(" ") > -1 && _url.indexOf("%") >
-1 ? _url
                .replaceAll(" ", "%20")
                : _url;
        return _internal_url;
    }

}

for HttpClient headers are:

GET /madeline/default.asp?GCID=C1000x047&AID=10280172&PID=1453275 HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.0.1
Host: www.allaboardtoys.com

HTTP/1.1 302 Object moved
Server: Microsoft-IIS/5.0
Date: Wed, 12 Jul 2006 09:57:38 GMT
P3P: policyref="http://www.allaboardtoys.com/w3c/p3p.xml"
X-Powered-By: ASP.NET
Pragma: no-cache
cache-control: no-store
Cache-Control: no-cache, must-revalidate
Location: http://www.allaboardtoys.com/madeline/?GCID=C1000x047&AID=10280172&PID=1453275
Location: /madeline
Content-Length: 130
Content-Type: text/html
Expires: Tue, 11 Jul 2006 09:57:38 GMT
Set-Cookie: ShopperManager%2F=sts=nwc45&ShopperManager%2F=A4AD8C16350E42B500ECC55B4F45FE8C;
expires=Thu, 27-Jul-2006 09:57:38 GMT; domain=allaboardtoys.com; path=/
Set-Cookie: ASPSESSIONIDCSRAQQTS=GFIGGBPBPBAKFJMDODCENAKH; path=/
Cache-control: no-cache
----------------------------------------------------------
GET /madeline HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.0.1
Host: www.allaboardtoys.com
Cookie: ShopperManager%2F=sts=nwc45&ShopperManager%2F=A4AD8C16350E42B500ECC55B4F45FE8C
Cookie: ASPSESSIONIDCSRAQQTS=GFIGGBPBPBAKFJMDODCENAKH

HTTP/1.1 302 Object Moved
Location: http://www.allaboardtoys.com/madeline/
Server: Microsoft-IIS/5.0
Content-Type: text/html
Content-Length: 161
----------------------------------------------------------
GET /madeline/ HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.0.1
Host: www.allaboardtoys.com
Cookie: ShopperManager%2F=sts=nwc45&ShopperManager%2F=A4AD8C16350E42B500ECC55B4F45FE8C
Cookie: ASPSESSIONIDCSRAQQTS=GFIGGBPBPBAKFJMDODCENAKH

HTTP/1.1 500 Internal Server Error
Server: Microsoft-IIS/5.0
Date: Wed, 12 Jul 2006 09:57:38 GMT
P3P: policyref="http://www.allaboardtoys.com/w3c/p3p.xml"
X-Powered-By: ASP.NET
Pragma: no-cache
cache-control: no-store
Cache-Control: no-cache, must-revalidate
Content-Length: 318
Content-Type: text/html
Expires: Tue, 11 Jul 2006 09:57:38 GMT
Set-Cookie: ShopperManager%2F=sts=nwc45&ShopperManager%2F=A4AD8C16350E42B500ECC55B4F45FE8C%2CASPSESSIONIDCSRAQQTS%3DGFIGGBPBPBAKFJMDODCENAKH;
expires=Thu, 27-Jul-2006 09:57:38 GMT; domain=allaboardtoys.com; path=/
Cache-control: no-cache


and for firefox:


GET /madeline/default.asp?GCID=C1000x047&AID=10280172&PID=1453275 HTTP/1.1
Host: www.allaboardtoys.com
User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.4) Gecko/20060614 Firefox/1.5.0.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru,en;q=0.7,en-us;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: KOI8-R,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: ShopperManager%2F=sts=nwc45&ShopperManager%2F=00B7DB4FE1034AF289DAA46000102466

HTTP/1.x 302 Object moved
Server: Microsoft-IIS/5.0
Date: Wed, 12 Jul 2006 10:05:18 GMT
X-Powered-By: ASP.NET
P3P: policyref="http://www.allaboardtoys.com/w3c/p3p.xml"
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, no-cache
Location: /madeline
Content-Length: 130
Content-Type: text/html
Expires: Tue, 11 Jul 2006 10:05:18 GMT
Set-Cookie: ShopperManager%2F=sts=nwc45&ShopperManager%2F=00B7DB4FE1034AF289DAA46000102466;
expires=Thu, 27-Jul-2006 10:05:18 GMT; domain=allaboardtoys.com; path=/
Set-Cookie: ASPSESSIONIDCATQCDDQ=COIDDADBJEONBCNBBAKPGIBM; path=/
----------------------------------------------------------
GET /madeline HTTP/1.1
Host: www.allaboardtoys.com
User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.4) Gecko/20060614 Firefox/1.5.0.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru,en;q=0.7,en-us;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: KOI8-R,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: ShopperManager%2F=sts=nwc45&ShopperManager%2F=00B7DB4FE1034AF289DAA46000102466;
ASPSESSIONIDCATQCDDQ=COIDDADBJEONBCNBBAKPGIBM

HTTP/1.x 302 Object Moved
Location: http://www.allaboardtoys.com/madeline/
Server: Microsoft-IIS/5.0
Content-Type: text/html
Content-Length: 161
----------------------------------------------------------
GET /madeline/ HTTP/1.1
Host: www.allaboardtoys.com
User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.0.4) Gecko/20060614 Firefox/1.5.0.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ru,en;q=0.7,en-us;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: KOI8-R,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: ShopperManager%2F=sts=nwc45&ShopperManager%2F=00B7DB4FE1034AF289DAA46000102466;
ASPSESSIONIDCATQCDDQ=COIDDADBJEONBCNBBAKPGIBM

HTTP/1.x 200 OK
Server: Microsoft-IIS/5.0
Date: Wed, 12 Jul 2006 10:05:18 GMT
X-Powered-By: ASP.NET
P3P: policyref="http://www.allaboardtoys.com/w3c/p3p.xml"
Pragma: no-cache
Cache-Control: no-store, no-cache, must-revalidate, no-cache
Content-Length: 23672
Content-Type: text/html
Expires: Tue, 11 Jul 2006 10:05:18 GMT
Set-Cookie: ShopperManager%2F=sts=nwc45&ShopperManager%2F=00B7DB4FE1034AF289DAA46000102466;
expires=Thu, 27-Jul-2006 10:05:18 GMT; domain=allaboardtoys.com; path=/

Is there anything I can try with HttpClient to avoid this error?

-- 
Eugene N Dzhurinsky

---------------------------------------------------------------------
To unsubscribe, e-mail: httpclient-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpclient-user-help@jakarta.apache.org


Mime
View raw message