You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by Philippe Le Hegaret <pl...@w3.org> on 2001/05/28 16:38:55 UTC

Accept headers in Batik

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

Re: Accept headers in Batik

Posted by Vincent Hardy <vh...@eng.sun.com>.
Philippe,

Good to hear from you and many thanks for the patch! We will put it
in.

Cheers.
V.

Philippe Le Hegaret wrote:
> 
> 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: batik-dev-unsubscribe@xml.apache.org
> For additional commands, e-mail: batik-dev-help@xml.apache.org

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org