Android:改造不带“/”的URL路径
Posted
技术标签:
【中文标题】Android:改造不带“/”的URL路径【英文标题】:Android:Retrofit URL Path Without "/" 【发布时间】:2015-01-06 02:18:59 【问题描述】:所以我实际上是在尝试使用 TypedByteArray 作为我的主体进行 PUT。我正在与 Azure 服务器交互,所以第一步是
使用我的图像元数据进行 POST 调用,我会返回一个 URL(比如 URL_PUT)
我必须向那个 URL_PUT 发出 PUT 请求(从第 1 步开始),所以我的改造单例接口函数如下所示:
public interface ImageInterface
@PUT("/nothing")
Response uploadBlob(@Body TypedByteArray byteArray,
@Header("Content-Length") String byteArrayLength,
@Path(value="nothing",encode=false) String nothing);
但我收到一条错误消息,说当我无缘无故通过“”时,URL 路径必须以“/”开头。对于上述函数,我尝试传递一个空字符串,但无济于事。
所以基本上我只想使用带有端点的改造,但没有用于 PUT 的路径/平衡路径。有什么办法吗?
【问题讨论】:
你不能只输入@PUT("/")。您还将发送一个带有 Content-Length 的字节数组并同步进行。我希望你没有上传文件......这不是这样做的方法。如果您要解释您要发送的内容,我可以提供更多帮助。 哈哈...我没有在主线程上这样做...它就像回来了..但据我所知...我尝试了你提到的和它没用……不记得是什么原因了,但我敢肯定我试过了…… 【参考方案1】:拆分 URL_PUT 怎么样?
例如你有http://example.com/path/more/path/image.jpg
您将其拆分为 2 个字符串: - http//example.com - /path/more/path/image.jpg
然后你去掉第二个Stirng的第一个“/”。然后和你一样:
public interface ImageInterface
@PUT("/second-string")
Response uploadBlob(@Body TypedByteArray byteArray,
@Header("Content-Length") String byteArrayLength,
@Path(value="second-string",encode=false) String secondString);
然后在您的客户端上使用此接口的字符串 1。并将字符串 2 作为参数发送。我想这应该可行。
(对不起,我打字太快了,我正在移动)
【讨论】:
以上是关于Android:改造不带“/”的URL路径的主要内容,如果未能解决你的问题,请参考以下文章