【问题标题】:How does url encoding/decoding work in web service callsurl 编码/解码如何在 Web 服务调用中工作
【发布时间】:2017-03-20 09:26:35
【问题描述】:

我需要使用第三方 api,它需要如下所示的 url
URL?queryParam=02/10/1990

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

但是当我如下调用api时
GetMethod httpMethod = new GetMethod(url); httpMethod.setQueryString(getNameValuePairs(requestParams)); 其中 requestParams 是请求参数的映射。 api 报 400 错误。

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

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

所以我的怀疑是。

  1. queryParams默认是url编码的吗?是的,这里apache api是在consumer端编码request param,consumer必须手动解码吗?
  2. 当通过附加queryParams从浏览器调用api时,浏览器是否也自己做url编码?
  3. 它的清洁解决方案是什么?

【问题讨论】:

  • 使用UriBuilder
  • 为什么 UriBuilder 可以工作?它还对查询参数进行编码。

标签: java apache web-services api urlencode


【解决方案1】:

一个简单的解决方案是对 uri 进行框架化并将其传递给 getMethod() 构造函数。

string url;
url = baseURL+"?queryParam=02/10/1990" ;

GetMethod httpMethod = new GetMethod(url); 

查询参数主要用于发布请求负载。 在你的情况下,需要 fo

【讨论】:

  • 它给出了非法的arg异常。
【解决方案2】:

使用 base64 url​​ 编码和解码。它会解决问题。

【讨论】:

    猜你喜欢
    • 2015-01-26
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多