【问题标题】:getting an error while making a request发出请求时出错
【发布时间】:2012-03-29 19:17:57
【问题描述】:

我的 URI 中有以下内容

        uri.query = [id: "urn://salina/search/xplorer/XplorerApp",criteria:"{'includeNonGeotagged':'true','freetext':\{'text':" + "'" + "${searchString}" +"'}}",contentType:"rss20"]

我收到一条错误消息 java.net.URISyntaxException: Illegal character in query at index 94: https://pix.us.baesystems.com/search/query?id=urn://salina/search/xplorer/XplorerApp&criteria={'includeNonGeotagged':'true','freetext':{'text':'test'}}&contentType= rss20

当我转储 uri.toString() 的值并将其放入浏览器时,它工作正常,所以我无法弄清楚这里的问题是什么......

【问题讨论】:

    标签: grails groovy


    【解决方案1】:

    您收到此错误是因为您的 URI 中有未编码的字符。尝试对它们进行编码或首先从字符串中创建一个 URL:

    def url = "https://pix.us.baesystems.com/search/query?id=urn://salina/search/xplorer/XplorerApp&criteria={'includeNonGeotagged':'true','freetext':  {'text':'test'}}&contentType=rss20"
    URL url = new URL(url);
    URI uri = new URI(url.getProtocol(), url.getHost(), url.getPath(), url.getQuery(), null);
    println uri    
    

    这将打印正确的 URI:

    https://pix.us.baesystems.com/search/query?id=urn://salina/search/xplorer/XplorerApp&criteria=%7B'includeNonGeotagged':'true','freetext':%7B'text':'test'%7D%7D&contentType=rss20
    

    有关基本思想,另请参阅this answer

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 2021-05-24
      • 2021-12-05
      • 1970-01-01
      • 2017-08-06
      • 2022-01-06
      • 2018-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多