Hello, I facing strange problem with HttpClient
For some reason if there are more than 1 Location header in response, all
headers are collected into single string, for instance - 

/madeline/?GCID=C1000x047&AID=10280172&PID=1453275, /madeline

I used this test:

import junit.framework.Assert;
import junit.framework.TestCase;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.httpclient.params.HttpMethodParams;

import java.io.IOException;

public class HTTPClientTest extends TestCase {

    HttpClient client;

    HttpMethod method;

    protected void setUp() throws Exception {
        client = new HttpClient();
        String url = 
"http://www.allaboardtoys.com/madeline/default.asp?GCID=C1000x047&AID=10280172&PID=1453275";;
        URI uri = new URI(url, url.indexOf('%') != -1);
        method = new GetMethod();
        method.setURI(uri);
        HttpMethodParams params = method.getParams();
        params.setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
        params.setParameter(HttpClientParams.USER_AGENT, "Mozilla/4.0"
                + "(compatible; MSIE 6.0; Windows NT 5.1;)");
        method.setFollowRedirects(true);
    }

    public void testResultcode() {
        try {
            client.executeMethod(method);
            Assert.assertEquals(HttpStatus.SC_OK, method.getStatusCode());
        } catch (HttpException e) {
            e.printStackTrace(System.out);
        } catch (IOException e) {
            e.printStackTrace(System.out);
        }
    }
}


With tcpflow i found:

request was
---------------------------------------------------------------------------
GET /madeline/default.asp?GCID=C1000x047&AID=10280172&PID=1453275 HTTP/1.1
User-Agent: Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1;)
Host: www.allaboardtoys.com
---------------------------------------------------------------------------

and response

---------------------------------------------------------------------------
HTTP/1.1 302 Object moved
Server: Microsoft-IIS/5.0
Date: Tue, 11 Jul 2006 14:52:28 GMT
X-Powered-By: ASP.NET
P3P: policyref="http://www.allaboardtoys.com/w3c/p3p.xml";
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: Mon, 10 Jul 2006 14:52:28 GMT
Set-Cookie: 
ShopperManager%2F=sts=nwc45&ShopperManager%2F=C08BA8AEFED14F27BF4EF3FF1CE0CD85; 
expires=Wed, 26-Jul-2006 14:52:28 GMT; domain=allaboardtoys.com; path=/
Set-Cookie: ASPSESSIONIDCATQCDDQ=JLAADADBKEKJBHKKFALPEMHH; path=/
Cache-control: no-cache

<head><title>Object moved</title></head>
<body><h1>Object Moved</h1>This object may be found <a 
HREF="/madeline">here</a>.</body>
---------------------------------------------------------------------------

then next request

---------------------------------------------------------------------------
GET /madeline/?GCID=C1000x047&AID=10280172&PID=1453275, /madeline HTTP/1.1
User-Agent: Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1;)
Host: www.allaboardtoys.com
Cookie: 
ShopperManager%2F=sts=nwc45&ShopperManager%2F=C08BA8AEFED14F27BF4EF3FF1CE0CD85
Cookie: ASPSESSIONIDCATQCDDQ=JLAADADBKEKJBHKKFALPEMHH
---------------------------------------------------------------------------

and finally

---------------------------------------------------------------------------
HTTP/1.1 400 Bad Request
Server: Microsoft-IIS/5.0
Date: Tue, 11 Jul 2006 14:52:28 GMT
Content-Type: text/html
Content-Length: 87

<html><head><title>Error</title></head><body>The parameter is incorrect. 
</body></html>
---------------------------------------------------------------------------

As you can see, instead of http://www.allaboardtoys.com/madeline HttpClient
used

/madeline/?GCID=C1000x047&AID=10280172&PID=1453275, /madeline

which is wrong.

I tried to handle redirects manually, but contents of header "location" are 

http://www.allaboardtoys.com/madeline/?GCID=C1000x047&AID=10280172&PID=1453275, 
/madeline

Is it correct to split it by comma or I can get list of headers manually
somehow?

-- 
Eugene N Dzhurinsky

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to