Java url编码/解码如何在web服务调用中工作

Java url编码/解码如何在web服务调用中工作,java,apache,web-services,api,urlencode,Java,Apache,Web Services,Api,Urlencode,我需要使用第三方api,该api期望url如下 URL?queryParam=02/10/1990 当我通过附加queryParam(上面的ab)调用该api时,它工作正常 但是当我调用api时,如下所示 GetMethod httpMethod=新的GetMethod(url); setQueryString(getNameValuePairs(requestParams)); 其中requestParams是请求参数的映射。 api给出了400个错误 我在这里使用的api是apache.co

我需要使用第三方api,该api期望url如下
URL?queryParam=02/10/1990

当我通过附加queryParam(上面的ab)调用该api时,它工作正常

但是当我调用api时,如下所示
GetMethod httpMethod=新的GetMethod(url); setQueryString(getNameValuePairs(requestParams)); 其中requestParams是请求参数的映射。 api给出了400个错误

我在这里使用的api是apache.common api

当我查看setQueryString代码时,requestParams是url编码的

所以我的怀疑是

  • 默认情况下queryParams是url编码的吗?是的,这里apache api在使用者端编码请求参数,使用者是否必须手动解码
  • 当通过附加queryParams从浏览器调用api时,浏览器本身是否也进行url编码
  • 它的清洁解决方案是什么

  • 一个简单的解决方案是框定uri并将其传递给getMethod()构造函数

    string url;
    url = baseURL+"?queryParam=02/10/1990" ;
    
    GetMethod httpMethod = new GetMethod(url); 
    
    查询参数主要用于请求后有效负载。
    在您的情况下,需要使用base64 url编码和解码。它将解决问题。

    使用UriBuilder为什么会工作?它还对查询参数进行编码。它会给出非法的arg异常。