Android 如何在API调用中转义特殊字符?
我正试图获取API请求,但一个特殊字符“*”(星号)打断了我的API调用,因此发送不完整。有什么办法可以逃脱吗 与此相反:Android 如何在API调用中转义特殊字符?,android,api,rest,httprequest,retrofit2,Android,Api,Rest,Httprequest,Retrofit2,我正试图获取API请求,但一个特殊字符“*”(星号)打断了我的API调用,因此发送不完整。有什么办法可以逃脱吗 与此相反: https://rest2.bermanngps.cl/BermannRest/api/enviacomando?tk=3cf40d35c4e48b60e007cdc85f1342f5&comando=%24SRVFFFFFF%2C25%2C1*8F&md5pass=4e1ed8ef96fb83a0a30c39b0019fadc7&user=101
https://rest2.bermanngps.cl/BermannRest/api/enviacomando?tk=3cf40d35c4e48b60e007cdc85f1342f5&comando=%24SRVFFFFFF%2C25%2C1*8F&md5pass=4e1ed8ef96fb83a0a30c39b0019fadc7&user=1017&avserie=12977
此邮件发送至:
https://rest2.bermanngps.cl/BermannRest/api/enviacomando?tk=3cf40d35c4e48b60e007cdc85f1342f5&comando=%24SRVFFFFFF%2C25%2C1
我使用改造的GET请求方法,使用存储库动态加载查询字符串。我将如何在那里使用URLEncoder方法
@GET(“enviacomando”)
暂停趣味getSendComando(
@查询(“tk”)tk:String,
@查询(“comando”)comando:String,
@查询(“md5pass”)md5pass:String,
@查询(“用户”)用户:字符串,
@查询(“avserie”)avserie:String
):回应
您可以为此使用URLEncoder类。
所以您需要使用URLEncoder对URL中的查询部分进行编码
String query = URLEncoder.encode("tk=3cf40d35c4e48b60e007cdc85f1342f5&comando=%24SRVFFFFFF%2C25%2C1*8F&md5pass=4e1ed8ef96fb83a0a30c39b0019fadc7&user=1017&avserie=12977", "utf-8");
String url = "https://rest2.bermanngps.cl/BermannRest/api/enviacomando?" + query;
我刚刚更改了与URLEncoder冲突的值
String query = URLEncoder.encode("tk=3cf40d35c4e48b60e007cdc85f1342f5&comando=%24SRVFFFFFF%2C25%2C1*8F&md5pass=4e1ed8ef96fb83a0a30c39b0019fadc7&user=1017&avserie=12977", "utf-8");
String url = "https://rest2.bermanngps.cl/BermannRest/api/enviacomando?" + query;
token?.let{tk->
userId?.let{user->
comando?comandoComando?让{it1->
mVehiculo?让{it2->
mViewModel.sendComando(
tk=tk,
avserie=it2.avserie,
用户=用户,
comando=URLEncoder.encode(it1,“UTF-8”),
md5pass=通过
)
}
}
}
}
由于此方法无法持续工作,我尝试使用@Url发送请求
尽管如此,很多时候请求在“*”(星号)处中断此解决方案并非始终保持一致性。