android - 如何在 API 调用中转义特殊字符?

标签 android api rest httprequest retrofit2

我正在尝试获取 API 请求,但特殊字符“*”(星号)中断了我的 API 调用,因此发送的请求不完整。有什么办法可以逃脱吗?

enter image description here

而不是这个:

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

我正在使用retrofit的GET请求方法,使用repository动态加载Query字符串。我将如何在那里使用 URLEncoder 方法?

    @GET("enviacomando")
    suspend fun getSendComando(
    @Query("tk") tk: String,
    @Query("comando") comando: String,
    @Query("md5pass") md5pass: String,
    @Query("user") user: String,
    @Query("avserie") avserie: String
    
    ): Response<SendComandoResponse>

最佳答案

您可以为此使用 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;

关于android - 如何在 API 调用中转义特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65722503/

相关文章:

java - 有没有办法隐藏ScrollView的滚动指示器?

android - 在弹出窗口中显示进度条

json - REST - 部分资源

ios - 推荐 : RestKit or AFNetworking for Rest/Soap server

Python:显示为列表 httplib.HTTPMessage 时出现问题

java - 尝试在 Java 中进行 REST API Cypher 查询时如何解决 neo4j 错误(参数必须是 JSON 映射)

javascript - 停止我的应用程序休眠 (Cordova/Android)

javascript - 除了react-native-background-task之外,还有什么方法可以在React Native中执行后台任务吗?

apache-flex - 如何提高purePDF的性能?

iOS/Soundcloud API - 从 Soundcloud API 下载轨道,无需 stream_url 请求