【问题标题】:Java URL encoding escaping special charactersJava URL 编码转义特殊字符
【发布时间】:2018-03-12 16:32:40
【问题描述】:

我正在我的 java 代码中发出一个 GET 请求,我想用来执行 GET 请求的 URL 是:

http://localhost:1111/sms/v1/222222?startTime=2015-12-29T14%3A00%3A00.000Z&endTime=2015-12-29T15%3A00%3A00.000Z

然而它的出现是:

http://localhost:1111/sms/v1/222222?startTime=2015-12-29T14%253A00%253A00.000Z&endTime=2015-12-29T15%253A00%253A00.000Z

请注意以下字符正在被替换:

% 到 %25

如何确保我的请求按照我的要求发送。我的代码如下所示:

public static String getRequest(String id, String startTs, String endTs) {
    Response response = givenAuthJson("username", "password")
            .queryParam("startTime", startTs)
            .queryParam("endTime", endTs)
            .get(BASE_URL+"/sms/v1/{id}", id);
    response
            .then()
            .spec(responseSpec);

    return response.asString();
}

我称这个方法为:

.getRequest("222222", "2015-12-29T14%3A00%3A00.000Z","2015-12-29T15%3A00%3A00.000Z");

您能否使用给出的代码举例或回答?谢谢。

【问题讨论】:

  • 这是RestAssured吗?你检查this了吗?
  • 那是 %-encoding,它用服务器期望的字符编码中的字节替换非 ASCII 和特殊字符(几乎总是 UTF-8,但这取决于服务器)。你的图书馆假设你想要,但你已经做到了。 @BackSlash 似乎是为什么。
  • @BackSlash - 使用您的建议,它看起来更好,但仍然是“%”符号导致问题。 /sms/v1/222222?startTime=2015-12-29T14%253A00%253A00.000Z&endTime=2015-12-29T15%253A00%253A00.000Z。我更新了问题以反映这一点。
  • 您正在对已编码的参数进行编码。你方法的参数应该是"2015-12-29T14:00:00.000Z", "2015-12-29T15:00:00.000Z"

标签: java url get character-encoding


【解决方案1】:

好的 - 不确定我是否可以回答自己的问题,但如果有人和我做同样的事情,这是为了所有人的利益!

我通过添加以下内容克服了这个问题

.urlEncodingEnabled(false)

参考: how to handle Special character in query param value in Rest assured

感谢所有帮助过的人。

【讨论】:

  • 是的,您可以回答自己的问题。当您满意时,您也应该接受最佳正确答案。
猜你喜欢
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 2012-06-02
  • 1970-01-01
相关资源
最近更新 更多