jericho     2002/10/20 06:34:56

  Modified:    httpclient/src/java/org/apache/commons/httpclient
                        HttpMethodBase.java
  Log:
  - Use httpclient.util.URIUtil methods instead of httpclient.URIUtil
  - Fix a bug not to encode of the query component, when the generateRequestLine 
method do
  - minor local variable naming change (from an abbreviation to a full string)
  
  Revision  Changes    Path
  1.66      +46 -19    
jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java
  
  Index: HttpMethodBase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v
  retrieving revision 1.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- HttpMethodBase.java       16 Oct 2002 16:58:26 -0000      1.65
  +++ HttpMethodBase.java       20 Oct 2002 13:34:55 -0000      1.66
  @@ -77,6 +77,7 @@
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  +import org.apache.commons.httpclient.util.URIUtil;
   
   /**
    * <p>
  @@ -401,9 +402,23 @@
                   } else {
                       needAmp = true;
                   }
  -                buf.append(URIUtil.encode(params[i].getName())).append("=");
  +                String queryName = null;
  +                try {
  +                    queryName = URIUtil.encodeQuery(params[i].getName());
  +                } catch (URIException urie) {
  +                    log.error("URI query name encoding error", urie);
  +                    queryName = params[i].getName();
  +                }
  +                buf.append(queryName).append("=");
                   if (params[i].getValue() != null) {
  -                    buf.append(URIUtil.encode(params[i].getValue()));
  +                    String queryValue = null;
  +                    try {
  +                        queryValue = URIUtil.encodeQuery(params[i].getValue());
  +                    } catch (URIException urie) {
  +                        log.error("URI query value encoding error", urie);
  +                        queryValue = params[i].getValue();
  +                    }
  +                    buf.append(queryValue);
                   }
               }
           }
  @@ -855,11 +870,11 @@
                           return statusCode;
                       }
   
  -                    //change the path and query string to the redirect
  +                    // change the path and query string to the redirect
                       String absolutePath = URIUtil.getPath(url.toString());
  -                    String qs = URIUtil.getQueryString(url.toString());
  +                    String query = URIUtil.getQuery(url.toString());
                       setPath(URIUtil.decode(absolutePath));
  -                    setQueryString(qs);
  +                    setQueryString(URIUtil.decode(query));
   
                       if (log.isDebugEnabled()) {
                           log.debug("Changing path from \"" + getPath()
  @@ -867,7 +882,7 @@
                                     + "\" in response to " + statusCode
                                     + " response.");
                           log.debug("Changing query string from \""
  -                                  + getQueryString() + "\" to \"" + qs
  +                                  + getQueryString() + "\" to \"" + query
                                     + "\" in response to " + statusCode
                                     + " response.");
                       }
  @@ -1289,26 +1304,38 @@
        * 
        * @param connection the connection the request will be sent to
        * @param name the method name generate a request for
  -     * @param reqPath the path for the request
  -     * @param qString the query string for the request
  +     * @param requestPath the path string for the request
  +     * @param query the query string for the request
        * @param protocol the protocol to use (e.g. HTTP/1.0)
        * 
        * @return a line to send to the server that will fulfil the request
        */
       protected static String generateRequestLine(HttpConnection connection, 
  -        String name, String reqPath, 
  -        String qString, String protocol) {
  +        String name, String requestPath, String query, String protocol) {
           log.trace("enter HttpMethodBase.generateRequestLine(HttpConnection, "
               + "String, String, String, String)");
   
           StringBuffer buf = new StringBuffer();
  -        buf.append((null == reqPath)
  -                   ? "/" : URIUtil.encode(reqPath, URIUtil.pathSafe()));
  -        if (null != qString) {
  -            if (qString.indexOf("?") < 0) {
  +        String path = null;
  +        try {
  +            path = (requestPath == null) ? "/" : URIUtil.encodePath(requestPath);
  +        } catch (URIException urie) {
  +            log.error("URI path encoding error");
  +            path = requestPath;
  +        }
  +        buf.append(path);
  +        if (query != null) {
  +            if (query.indexOf("?") < 0) {
                   buf.append("?");
               }
  -            buf.append(qString);
  +            String queryString = null;
  +            try {
  +                queryString = (query == null) ? "/" : URIUtil.encodeQuery(query);
  +            } catch (URIException urie) {
  +                log.error("URI query encoding error");
  +                queryString = query;
  +            }
  +            buf.append(queryString);
           }
   
           if (!connection.isProxied() || connection.isTransparent()) {
  
  
  

--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@;jakarta.apache.org>

Reply via email to