提问人:Kushagra Kumar 提问时间:3/21/2021 更新时间:3/22/2021 访问量:472
在android studio中构建url时如何对特殊字符进行编码?
How to encode special characters while building url in android studio?
问:
我正在尝试使用特殊字符和运算符对 URL 进行编码。这是 URL 的样子:OR
https://example.net/house/info?_queryFilter=_id+eq+%27333a22e7-5g5g-4sd5-df67-fg66a9da8027%27+or+_id+eq+%2756nm67d0-7687-4d70-fg45-22d6745423a7%27
注意:在上面的 URL 中表示333a22e7-5g5g-4sd5-df67-fg66a9da8027
56nm67d0-7687-4d70-fg45-22d6745423a7
houseID
这是我用来循环遍历的代码:houseID
for (int i = 0; i < apiResponse.getHouses().size(); i++) {
if (houseQuery == null) {
houseQuery = "_id+eq+".concat("'").concat(apiResponse.getHouses().get(i).getHouseId()).concat("'");
} else {
houseQuery = houseQuery.concat("+or+_id+eq+").concat("'").concat(apiResponse.getHouses().get(i).getHouseId()).concat("'");
}
}
这是我的 API 接口:
@GET(UrlConstants.URL_GET_HOUSE)
void getHouseInfo(
@Header(Constants.HEADER_SESSIONID) String sessionID,
@Query(Constants.QUERY_FILTER) String query,
Callback<HouseInfoResponse> houseInfoResponseCallback);
我在日志中收到以下错误:
{"code":400,"reason":"Bad Request","message":"The value '_id+eq+'333a22e7-5g5g-4sd5-df67-fg66a9da8027'+or+_id+eq+'56nm67d0-7687-4d70-fg45-22d6745423a7'' for parameter '_queryFilter' could not be parsed as a valid query filter"}
我将不胜感激。
答:
0赞
user12619138
3/21/2021
#1
尝试对您的 URL 进行编码以查看它是否有效,例如使用 %27 而不是 ' 。
您可以使用此网站进行编码
0赞
Kushagra Kumar
3/22/2021
#2
问题在于,登录被替换为两位数的十六进制表示形式,以 ) 开头,即 .
服务器不需要查询前缀和 .+
_id+eq+
%
%2B
+
_id+eq+
+or+_id+eq+
溶液:在指定属性的同时指定 as 有效。encodeValue
False
Query
@Header(Constants.HEADER_SESSIONID) String sessionID,
@Query(value = Constants.QUERY_FILTER, , encodeValue = false) String query,
Callback<HouseInfoResponse> houseInfoResponseCallback);
评论