如何转义 API 调用中的特殊字符?
How to escape special characters in the API call?
我正在尝试获取 API 的请求,但是特殊字符“*”(星号)中断了我的 API 调用,因此发送不完整。有什么办法可以逃脱吗?
而不是这个:
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 strings。我将如何在那里使用 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>
您可以为此使用 URL 编码器 class。
因此,您需要使用 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 冲突的值。
token?.let { tk ->
userId?.let { user ->
comando?.comandoComando?.let { it1 ->
mVehiculo?.let { it2 ->
mViewModel.sendComando(
tk = tk,
avserie = it2.avSerie,
user = user,
comando = URLEncoder.encode(it1, "UTF-8"),
md5pass = pass
)
}
}
}
}
由于此方法不能始终如一地工作,我尝试使用@Url 发送请求。
不过,很多时候请求在“*”(星号)处中断
我正在尝试获取 API 的请求,但是特殊字符“*”(星号)中断了我的 API 调用,因此发送不完整。有什么办法可以逃脱吗?
而不是这个:
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 strings。我将如何在那里使用 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>
您可以为此使用 URL 编码器 class。 因此,您需要使用 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 冲突的值。
token?.let { tk ->
userId?.let { user ->
comando?.comandoComando?.let { it1 ->
mVehiculo?.let { it2 ->
mViewModel.sendComando(
tk = tk,
avserie = it2.avSerie,
user = user,
comando = URLEncoder.encode(it1, "UTF-8"),
md5pass = pass
)
}
}
}
}
由于此方法不能始终如一地工作,我尝试使用@Url 发送请求。
不过,很多时候请求在“*”(星号)处中断