I noticed that Batik doesn't send any Accept headers (or wrong ones) in the
HTTP requests.
I added them in the 1.0 version (see attachments).

Note:
 - Didn't do anything about Accept-Language yet.
 - the charset parameter is valid for text/xml and application/xml.
   Don't know about image/svg+xml.
 - I also added the User-Agent header.
   

Philippe
Index: sources/org/apache/batik/ext/awt/image/ImageLoader.java
===================================================================
RCS file: 
/home/cvspublic/xml-batik/sources/org/apache/batik/ext/awt/image/ImageLoader.java,v
retrieving revision 1.1
diff -r1.1 ImageLoader.java
22c22,24
< public class ImageLoader {
---
> import org.apache.batik.util.HTTPConstants;
> 
> public class ImageLoader implements HTTPConstants {
185c190,201
<                 in = url.openStream();
---
>               URLConnection urlC = url.openConnection();
> 
>               if (urlC instanceof HttpURLConnection) {
>                   urlC.setRequestProperty(HTTP_USER_AGENT_HEADER, 
>                                           HTTP_BATIK_USER_AGENT);
>                   urlC.setRequestProperty(HTTP_ACCEPT_HEADER,
>                                           HTTP_ACCEPT_JPEG);
>               }
> 
>               urlC.connect();
> 
>                 in = urlC.getInputStream();
Index: sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java
===================================================================
RCS file: 
/home/cvspublic/xml-batik/sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java,v
retrieving revision 1.44
diff -r1.44 JSVGViewerFrame.java
47a48,49
> import java.net.URLConnection;
> import java.net.HttpURLConnection;
108a111
> import org.apache.batik.util.HTTPConstants;
140a144
>                HTTPConstants,
1037a1042,1051
>                       URLConnection urlC = u.openConnection();
>       
>                       if (urlC instanceof HttpURLConnection) {
>                           urlC.setRequestProperty(HTTP_USER_AGENT_HEADER, 
>                                                   HTTP_BATIK_USER_AGENT);
>                           urlC.setRequestProperty(HTTP_ACCEPT_HEADER,
>                                                   HTTP_ACCEPT_SVG);
>                       }
>                       
>                       urlC.connect();
1039c1053,1054
<                         InputStream is = ParsedURL.checkGZIP(u.openStream());
---
>                         InputStream is = 
>                           ParsedURL.checkGZIP(urlC.getInputStream());
Index: sources/org/apache/batik/util/ParsedURLData.java
===================================================================
RCS file: /home/cvspublic/xml-batik/sources/org/apache/batik/util/ParsedURLData.java,v
retrieving revision 1.1
diff -r1.1 ParsedURLData.java
14a15,16
> import java.net.URLConnection;
> import java.net.HttpURLConnection;
19c21,23
< public class ParsedURLData {
---
> import org.apache.batik.util.HTTPConstants;
> 
> public class ParsedURLData implements HTTPConstants {
232c236,251
<         return url.openStream();
---
> 
>       URLConnection urlC = url.openConnection();
>       
>       if (urlC instanceof HttpURLConnection) {
>           urlC.setRequestProperty(HTTP_USER_AGENT_HEADER, 
>                                   HTTP_BATIK_USER_AGENT);
>           urlC.setRequestProperty(HTTP_ACCEPT_HEADER,
>                                   HTTP_ACCEPT_PNG + ","
>                                   + HTTP_ACCEPT_JPEG + ","
>                                   + HTTP_ACCEPT_GIF + ","
>                                   + HTTP_ACCEPT_TIFF);
>       }
>       
>       urlC.connect();
> 
>         return urlC.getInputStream();
Index: sources/org/apache/batik/css/parser/Parser.java
===================================================================
RCS file: /home/cvspublic/xml-batik/sources/org/apache/batik/css/parser/Parser.java,v
retrieving revision 1.10
diff -r1.10 Parser.java
18a19,20
> import java.net.URLConnection;
> import java.net.HttpURLConnection;
28a31
> import org.apache.batik.util.HTTPConstants;
51a55
>                HTTPConstants,
1536c1540,1553
<                 return characterStream(source, url.openStream(), enc);
---
>               URLConnection urlC = url.openConnection();
> 
>               if (urlC instanceof HttpURLConnection) {
>                   urlC.setRequestProperty(HTTP_USER_AGENT_HEADER, 
>                                           HTTP_BATIK_USER_AGENT);
>                   urlC.setRequestProperty(HTTP_ACCEPT_HEADER,
>                                           HTTP_ACCEPT_CSS);
>               }
> 
>               urlC.connect();
> 
>               // Don't disconnect the connection to allow persistent
>               // connection.
>                 return characterStream(source, urlC.getInputStream(), enc);
Index: sources/org/apache/batik/dom/svg/SAXSVGDocumentFactory.java
===================================================================
RCS file: 
/home/cvspublic/xml-batik/sources/org/apache/batik/dom/svg/SAXSVGDocumentFactory.java,v
retrieving revision 1.8
diff -r1.8 SAXSVGDocumentFactory.java
11a12
> import java.io.BufferedInputStream;
16a18,19
> import java.net.URLConnection;
> import java.net.HttpURLConnection;
23a27,28
> import org.apache.batik.util.HTTPConstants;
> 
41c46,47
<     implements SVGDocumentFactory {
---
>     implements SVGDocumentFactory,
>                HTTPConstants {
78a85,86
>       URLConnection urlC;
> 
85c93,109
<         InputStream is = url.openStream();
---
>       urlC = url.openConnection();
>       
>       if (urlC instanceof HttpURLConnection) {
>           // no constant for Batik version?!?
>           urlC.setRequestProperty(HTTP_USER_AGENT_HEADER, 
>                                   HTTP_BATIK_USER_AGENT);
>           // this is a CSS parser, only accept the CSS mime type
>           urlC.setRequestProperty(HTTP_ACCEPT_HEADER,
>                                   HTTP_ACCEPT_SVG);
>       }
> 
>       urlC.connect();
>       
>         InputStream is = urlC.getInputStream();
>       if (!is.markSupported()) {
>           is = new BufferedInputStream(is, 4096);
>       }
86a111
>           is.mark(16);
89,90c114
<             is.close();
<             is = url.openStream();
---
>           is.reset();
94a119,144
> 
>       // now looking for a charset encoding in the content type       
>       // such as "image/svg+xml; charset=iso8859-1"
>       // this is not official for image/svg+xml yet! only for text/xml and maybe
>       // for application/xml
>       String contentType = urlC.getContentType();
>       int cindex = (contentType == null)? 
>           -1 
>           : contentType.indexOf(HTTP_CHARSET);
> 
>       if (cindex != -1) {
>           StringBuffer bcharset = new StringBuffer(10);
>           int length            = contentType.length();
>           int i                 = cindex + HTTP_CHARSET.length();
>           while ((i < length) && (contentType.charAt(i) != '=')) {
>               i ++;
>           }
>           if (++i < length) {
>               char c;
>               while ((i < length) && ((c = contentType.charAt(i)) != ',')) {
>                   bcharset.append(c);
>                   i ++;
>               }
>               isrc.setEncoding(bcharset.toString().trim());
>           }
>       }
/*****************************************************************************
 * Copyright (C) The Apache Software Foundation. All rights reserved.        *
 * ------------------------------------------------------------------------- *
 * This software is published under the terms of the Apache Software License *
 * version 1.1, a copy of which has been included with this distribution in  *
 * the LICENSE file.                                                         *
 *****************************************************************************/

package org.apache.batik.util;

/**
 * Contains useful HTTP Headers used for HTTP requests.
 */
public interface HTTPConstants {
    String HTTP_ACCEPT_HEADER          = "Accept";
    String HTTP_ACCEPT_LANGUAGE_HEADER = "Accept-Language";
    String HTTP_USER_AGENT_HEADER      = "User-Agent";

    String HTTP_CHARSET                = "charset";

    String HTTP_BATIK_USER_AGENT       = "Batik/1.0";
    String HTTP_ACCEPT_JPEG            = "image/jpeg";
    String HTTP_ACCEPT_GIF             = "image/gif";
    String HTTP_ACCEPT_PNG             = "image/png";
    String HTTP_ACCEPT_TIFF            = "image/tiff";
    String HTTP_ACCEPT_CSS             = "text/css";
    String HTTP_ACCEPT_SVG             =
	"image/svg+xml,application/xml,text/xml";

}

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

Reply via email to