我正在进行以下调用
@Headers("Content-Type:application/json")
@POST("{uri}")
Call<SolarWindsQueryResult<Object>> updateTestFlagForNode(@Path(value="uri",encoded = true/false) String Uri,@Body RunTestCases runTestCases);
所以我想发布的网址是
对此方法的调用如下
solarWindsService.updateTestFlagForNode("swis://solarwinds-01./Orion/Orion.Nodes/NodeID=1/CustomProperties",new RunTestCases("true")).execute()
对于编码的true和false,此调用均失败。我得到以下异常
java.lang.IllegalArgumentException:格式错误的URL。基数:https://10.50.1.71:17778/SolarWinds/InformationService/v3/Json/,相对:swis://solarwinds-01./Orion/Orion.Nodes/NodeID=1/CustomProperties/CustomProperties
在改造代码中,我看到builder.parse(HttpUrl base,String input)返回UNSUPPORTED_SCHEME,因为它在输入字符串中查找HTTP或HTTPS,而HttpUrl返回null。似乎Retrofit不支持这种网址或者我做错了。需要帮忙。仅供参考,它适用于chrome
我可以通过使用@Url注释绕过该代码,但如果我可以使用@Path仍然执行上述请求,那将会很好。
答案 0 :(得分:2)
okhttp仅支持http / https。在尝试找出如何将其与基础合并并且非http方案导致您遇到麻烦之前,它将您的路径解析为完整URL。您可以通过在前面添加对当前路径的相对引用来使其看起来更像path
-
@POST("./{uri}")
或者你可以在通话中这样做 -
solarWindsService.updateTestFlagForNode("./swis://solarwinds-01./Orion/Orion.Nodes/NodeID=1/CustomProperties",new RunTestCases("true")).execute()