如何签名包含带有空格的查询参数的GET请求

问题描述 投票:1回答:1

想消耗Twitter search API,我的所有测试都可以,但那些在我的搜索查询中包含空格的测试除外。

例如:使用@RedouaneBali has:mentions查询进行的搜索会生成以下请求:

Request{method=GET, url=https://api.twitter.com/1.1/tweets/search/30day/dev.json?fromDate=201912261403&toDate=202001251248&maxResults=100&query=%40RedouaneBali%20has%3Amentions, tags={}}

并以此{"error":{"message":"Could not authenticate you."}}结尾

所以我得出结论,由于空间原因,签名部分是KO(我的查询中没有任何空间,一切正常。)我试图用%20+替换它,但两者都不起作用。我正在使用此Oauth1SigningInterceptor class签署我的请求。

[在内部调试,我看到我的查询参数首先从@RedouaneBali has:mentions转换为%40RedouaneBali+has%3Amentions,然后又转换为%2540RedouaneBali%2Bhas%253Amentions,因此它可能来自此处,但对我来说却不太清楚。有这个双重签名正常吗?

关于如何将其转换为%20而不是+%2B的任何想法?

Twitter Doc

java http twitter request sign
1个回答
0
投票

这是一个ESCAPER问题,UrlEscapers.urlPathSegmentEscaper()变换%20中的空格,而UrlEscapers.urlFormParameterEscaper()转换+中的空格。显然,双重转换通常基于twitter文档。参见固定文件here

© www.soinside.com 2019 - 2024. All rights reserved.