如果网址字符串包含“〜”符号,则改型会调用错误的网址,导致404错误

时间:2019-01-09 06:04:43

标签: android retrofit

我已经创建了改造客户端和api接口,但是改造跳过了网址中的某些部分并调用了错误的网址

这里是完整网址 http://192.168.0.201/~amol/eflbudget/budgetmanagements/test

网址,该网址可用于调用 http://192.168.0.201/budgetmanagements/test/

这会导致404错误

global void execute(List<Case> caseShareList){
     if(!caseShareList.isEmpty() && caseShareList != null) {
            insert caseShareList;
     }
}

期望的api网址:http://192.168.0.201/~amol/eflbudget/budgetmanagements/test

实际网址: http://192.168.0.201/budgetmanagements/test/

在这里/〜amol / efurlt忽略了网址中的这一部分
有人可以在这里提出一些建议吗?

1 个答案:

答案 0 :(得分:3)

RFC中,以下字符:

未保留字符

URI中允许但没有保留的字符    目的被称为无保留。这些包括大写和小写    字母,十进制数字,连字符,句号,下划线和波浪号。

  unreserved  = ALPHA / DIGIT / "-" / "." / "_" / "~"

Berners-Lee等人。标准跟踪[页13]

RFC 3986 URI通用语法2005年1月

在用保留字符替换未保留字符方面有所不同的URI    其对应的百分比编码的US-ASCII八位位组是等效的:    标识相同的资源。但是,URI比较实现    并不总是在比较之前执行归一化(请参阅第    6)。为了保持一致性,ALPHA范围内的百分比编码八位字节    (%41-%5A和%61-%7A),DIGIT(%30-%39),连字符(%2D),期限(%2E),    URI不应创建下划线(%5F)或波浪号(%7E)    生产者,并且当在URI中找到时,应将其解码为    URI规范化器对应的未保留字符。