Uploaded image for project: 'Apache Jena'
  1. Apache Jena
  2. JENA-884

URI encoding in Params.httpString() and elsewhere

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • Jena 2.11.0
    • Jena 2.13.0
    • ARQ
    • None

    Description

      I have some code that adds query parameters to SPARQL Protocol requests.

      According to my quick research, the final HTTP query string depends on
      com.hp.hpl.jena.sparql.engine.http.Params.httpString():

          public String httpString()
          {
              StringBuffer sbuff = new StringBuffer() ;
              boolean first = true ;
              for (Pair p : pairs())
              {
                  if ( !first )
                      sbuff.append('&') ;
                  sbuff.append(p.getName()) ;
                  sbuff.append('=') ;
                  String x = p.getValue() ;
                  x = Convert.encWWWForm(x) ;
                  sbuff.append(x) ;
                  first = false ;
              }
              return sbuff.toString() ;
          }
      

      I see the parameter values being encoded, but not the names, for some
      reason? Looks like a bug to me.

      Also, the code depends on URLEncoder.encode(), which implements
      application/x-www-form-urlencoded, aka HTML form encoding.

      To my understanding, this is different from the URI syntax spec:
      https://tools.ietf.org/html/rfc3986

      One of the differences is space encoded as + vs. %20.

      Am I right that the incorrect encoding is used here (and probably in
      similar places)?

      I would suggest using a uniform URI builder in such cases, like this one:
      http://docs.oracle.com/javaee/6/api/javax/ws/rs/core/UriBuilder.html

      Attachments

        Activity

          People

            andy Andy Seaborne
            graphity Martynas Jusevičius
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: