I think it�s only case insensitive in that TreeMap parserHeaders() produces
!

But in the constructor this map is copied into a Properties object.

********************************************
        // parse headers
        headers.putAll(parseHeaders(in, line));
********************************************

Look at the following snippet, which does the same thing as
HttpResponse.class does:

********************************************
    public static void main(String[] args) {
        TreeMap headers = new TreeMap(String.CASE_INSENSITIVE_ORDER);
        headers.put("content-type", "text");

        Properties headers2 = new Properties();
        headers2.putAll(headers);

        System.out.println(headers.get("Content-Type"));  // = "text"
        
        System.out.println(headers2.get("Content-Type")); // = null
    }
********************************************

You can use the following url for your tests:
        
        http://www.verdi.de/0x0ac80f2b_0x0069a759

It is a PDF file and the server sends "Content-type: application/pdf" !


> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On 
> Behalf Of Chirag Chaman
> Sent: Mittwoch, 29. Dezember 2004 16:22
> To: [EMAIL PROTECTED]
> Subject: RE: [Nutch-dev] Fetch / Parse errors and a Bug
> 
> That is strange, coz I would expect it to be case 
> insensitive, but then again I have not tested, just looking 
> at the code.
> 
> You see how the TreeMap is initialized with 
> String.CASE_INSENSITIVE_ORDER
> 
> private Map parseHeaders(PushbackInputStream in, StringBuffer line)
>     throws IOException, HttpException {
>     TreeMap headers = new TreeMap(String.CASE_INSENSITIVE_ORDER);
>     return parseHeaders(in, line, headers); 
> 
> So I would imagine that a look up for Content-Type is case 
> insensitive as well.
> 
> 
> Can you send me the link to a page that has this problem -- 
> I'll run some tests to see what's causing this.
> 
> 
> -----Original Message-----
> From: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] On 
> Behalf Of Sven Wende
> Sent: Wednesday, December 29, 2004 9:16 AM
> To: [EMAIL PROTECTED]
> Subject: RE: [Nutch-dev] Fetch / Parse errors and a Bug
> 
> Chirag:
> 
> > I looked at where you mention that the content type is 
> being looked up 
> > and is Case Sensitive -- that is not correct. The HTTP protocol is 
> > adding the Content-type to the TreeMap which is initialized 
> with the 
> > String.CASE_INSENSITIVE_ORDER comparator. Thus it 
> internally will do a 
> > case-insensitive match.
> 
> Which code do you refer to?
> 
> I described a problem in the protocoll-http plugin. Just take 
> a look at the following code snippet from the CVS. As you can 
> see, the headers are read in and stored in a simple Hashtable. 
> The problem with case sensitive headers for content-type occurs in the
> toContent() method. (for example)
> 
> **************************************************************
> **************
> *****
> package net.nutch.protocol.http;
> 
> /** An HTTP response. */
> 
> public class HttpResponse {
>   private Properties headers = new Properties();                    
> 
>   /** Returns the value of a named header. */
>   public String getHeader(String name) {
>     return (String)headers.get(name);
>   }
> 
>   public Content toContent() {
>     String contentType = getHeader("Content-Type");
>     if (contentType == null)
>       contentType = "";
>     return new Content(orig, base, content, contentType, headers);
>   }
> 
>   private void processHeaderLine(StringBuffer line, TreeMap headers)
>     throws IOException, HttpException {
>     int colonIndex = line.indexOf(":");       // key is up to colon
>     if (colonIndex == -1) {
>       int i;
>       for (i= 0; i < line.length(); i++)
>         if (!Character.isWhitespace(line.charAt(i)))
>           break;
>       if (i == line.length())
>         return;
>       throw new HttpException("No colon in header:" + line);
>     }
>     String key = line.substring(0, colonIndex);
> 
>     int valueStart = colonIndex+1;            // skip whitespace
>     while (valueStart < line.length()) {
>       int c = line.charAt(valueStart);
>       if (c != ' ' && c != '\t')
>         break;
>       valueStart++;
>     }
>     String value = line.substring(valueStart);
> 
>     headers.put(key, value);
>   }
> }
> **************************************************************
> **************
> *****
> 
> > I think the problem is that no "content-type" was ever on 
> the page -- 
> > this leaves both the content type and the extension/suffix 
> to be blank 
> > and that causes a problem. Also, if a character-set is also not 
> > specified then the fetcher fails as well (as it cannot 
> write to disk).
> 
> I tested it and there was a "content-type" header. If its 
> name was "Content-Type", everything was ok but if its name 
> was "content-type" Nutch internally looses the information 
> about the content-type by the use of the code above.
> 
> 
> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of 
> > Chirag Chaman
> > Sent: Mittwoch, 29. Dezember 2004 13:59
> > To: [EMAIL PROTECTED]
> > Subject: RE: [Nutch-dev] Fetch / Parse errors and a Bug
> > 
> > Swen:
> > 
> > Yes, this is related. Bill Goffe seems to have had the same problem.
> > 
> > So here's the EASY fix. I tested it over the last few hours 
> with 100k 
> > pages and it's working as it should. Simply add "pdf" and "doc" for 
> > the pathSuffix of  parser-pdf and parser-doc.  In my 
> opinion no other 
> > parser plugin should have its pathsuffix left blank unless 
> it wants to 
> > be the default handler -- HTML should only be the one.
> > 
> > I looked at where you mention that the content type is 
> being looked up 
> > and is Case Sensitive -- that is not correct. The HTTP protocol is 
> > adding the Content-type to the TreeMap which is initialized 
> with the 
> > String.CASE_INSENSITIVE_ORDER comparator. Thus it 
> internally will do a 
> > case-insensitive match.
> > 
> > I think the problem is that no "content-type" was ever on 
> the page -- 
> > this leaves both the content type and the extension/suffix 
> to be blank 
> > and that causes a problem. Also, if a character-set is also not 
> > specified then the fetcher fails as well (as it cannot 
> write to disk).
> > 
> > I think we need to have global defaults if we encounter 
> such a problem
> > -- the Content type should be set to text/html and the 
> character-set 
> > should be
> > ISO-8859 or UTF-8.
> > 
> > Doug, since you initially wrote the http protocol what's 
> the best way 
> > to proceed.
> > 
> > Thankx
> > CC
> > 
> > Just as a side note, it would be AWESOME if we can specify 
> max fetch 
> > length based on the document type. 64k is way too small for 
> a PDF (as 
> > causes PDFs to not be parsed) and 1MB while okay for PDFs, 
> is way too 
> > big for an HTML page. Can be easily implemented by adding a 
> key to the 
> > plugin.xml for each parser.
> > 
> > 
> > 
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of 
> > Sven Wende
> > Sent: Wednesday, December 29, 2004 5:38 AM
> > To: [EMAIL PROTECTED]
> > Subject: RE: [Nutch-dev] Fetch / Parse errors and a Bug
> > 
> > Hi,
> > 
> > just a short annotation. Some weeks ago I described a 
> problem, which 
> > strongly correlates to yours:
> > 
> > Please take a look at
> > http://sourceforge.net/mailarchive/message.php?msg_id=10249708 !
> > 
> > Maybe my considerations can help to find a working solution.
> > 
> >  
> > 
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED]
> > > [mailto:[EMAIL PROTECTED] On 
> Behalf Of 
> > > Chirag Chaman
> > > Sent: Dienstag, 28. Dezember 2004 20:40
> > > To: [EMAIL PROTECTED]
> > > Subject: [Nutch-dev] Fetch / Parse errors and a Bug
> > > 
> > > So, after some research I think one of the 2 issues I
> > reported earlier
> > > can get fixed.
> > > 
> > > To refresh, the error I question is:
> > > > fetch okay, but can't parse
> > > 
> > 
> http://java.sun.com/j2se/1.4.2/docs/api/java/nio/charset/Charset.html,
> > > reason: Content-Type not application/pdf:
> > > 
> > > The problem is that this page did not specify its content
> > type in the
> > > header and the PDF plugin loads first and has a "" for it's path 
> > > suffix. Same goes for the parse-HTML plugin.
> > > Therefore when the fetcher cannot get the content type of a
> > page (i.e. 
> > > the page does not specify the content type) - the PDF plugin gets 
> > > called.
> > > 
> > > Now, its easy to fix this by putting "PDF" for the
> > pathsuffix for the
> > > parser-pdf...until I read this in Matt Kangas'
> > > documentation of the HTML plugin (Wiki)
> > > 
> > > "This entry looks a bit strange with the empty pathSuffix
> > value. But
> > > that just means that this plugin doesn't match any 
> pathSuffix value.
> > > So, parse-html is only used when we fetch remote URLs, 
> not anything 
> > > residing on the local filesystem."
> > > 
> > > Focusing on the sentence "So,.....filesystem".  Does this 
> mean its 
> > > best to leave the pathsuffix blank if we want this invoked
> > for remote
> > > URLs?  This was a bit confusing.
> > > 
> > > ***IS IT OKAY TO ADD PDF for the pathsuffix?  
> > > 
> > > 
> > > 
> > > And lastly, I think there may be a bug in the getSuffix() in 
> > > ParseFactory.java
> > > 
> > > We use full URLs including query string -- at times they
> > may contain
> > > "/" or "." Also, anchors "#" take any characters after on the URL.
> > > 
> > > Thus, to account for this function should be chaged as follows:
> > > 
> > > - newurl = substring or url till first "#" 
> > > - newurl = substring of newurl till "?" 
> > >   (this should give us a string that will be the "root" url)
> > > - now look for the last "." and retunr till end of string.
> > > 
> > > 
> > > 
> > >  
> > > 
> > > 
> > > 
> > > 
> > > -------------------------------------------------------
> > > SF email is sponsored by - The IT Product Guide Read honest
> > & candid
> > > reviews on hundreds of IT Products from real users.
> > > Discover which products truly live up to the hype. Start
> > reading now. 
> > > http://productguide.itmanagersjournal.com/
> > > _______________________________________________
> > > Nutch-developers mailing list
> > > [email protected]
> > > https://lists.sourceforge.net/lists/listinfo/nutch-developers
> > > 
> > > 
> > 
> > 
> > 
> > 
> > 
> > -------------------------------------------------------
> > SF email is sponsored by - The IT Product Guide Read honest 
> & candid 
> > reviews on hundreds of IT Products from real users.
> > Discover which products truly live up to the hype. Start 
> reading now. 
> > http://productguide.itmanagersjournal.com/
> > _______________________________________________
> > Nutch-developers mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/nutch-developers
> > 
> > 
> > 
> > 
> > -------------------------------------------------------
> > SF email is sponsored by - The IT Product Guide Read honest 
> & candid 
> > reviews on hundreds of IT Products from real users.
> > Discover which products truly live up to the hype. Start 
> reading now. 
> > http://productguide.itmanagersjournal.com/
> > _______________________________________________
> > Nutch-developers mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/nutch-developers
> > 
> > 
> 
> 
> 
> 
> 
> -------------------------------------------------------
> SF email is sponsored by - The IT Product Guide Read honest & 
> candid reviews on hundreds of IT Products from real users.
> Discover which products truly live up to the hype. Start reading now. 
> http://productguide.itmanagersjournal.com/
> _______________________________________________
> Nutch-developers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/nutch-developers
> 
> 
> 
> 
> -------------------------------------------------------
> SF email is sponsored by - The IT Product Guide Read honest & 
> candid reviews on hundreds of IT Products from real users.
> Discover which products truly live up to the hype. Start reading now. 
> http://productguide.itmanagersjournal.com/
> _______________________________________________
> Nutch-developers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/nutch-developers
> 
> 





-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://productguide.itmanagersjournal.com/
_______________________________________________
Nutch-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nutch-developers

Reply via email to