在从Android调用Post请求时,Retrofit提供空响应

时间:2019-08-05 06:25:26

标签: android api kotlin retrofit retrofit2

当前响应

Response{protocol=http/1.0, code=404, message=Not Found, 
    url=http://testapp*****/api/dev/myapp**/subscription%2F2be110}

但是我传递的网址是

url=http://testapp*****/api/dev/myapp**/subscription/2be110

“ subscription / 2be110” 作为字符串传递给在以下函数接收的api服务

@Headers("Content-Type: application/json;charset=UTF-8","Accept: application/json")
    @POST("{urlEndString}")
    fun getResponse(
        @Path ("urlEndString") urlEndString : String, @Body `object`: JsonObject
    ):Call<JsonObject>

反斜杠如何更改为“%2F”格式?有解决此问题的解决方案吗?

Nb:使用retrofit2

1 个答案:

答案 0 :(得分:1)

@Path参数经过URL编码。因此,斜杠也将被URLEncoded。您可以使用2个路径参数,例如

@POST("{urlEndString1}/{urlEndString2}")
fun getResponse(
        @Path ("urlEndString1") urlEndString1 : String, @Path ("urlEndString2") urlEndString2 : String, @Body `object`: JsonObject):Call<JsonObject>

并传递URL的2部分,以斜杠结尾。

或者,您可以使用@Path(value="urlEndString", encoded=true)来显示该参数已经被编码,而Retrofit不需要对其进行编码。