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路径的主要内容,如果未能解决你的问题,请参考以下文章

2,flask入门(URL)

如何将int值附加到android中改造的GET url

改造:@GET 命令中的多个查询参数?

url后面带斜杠与不带斜杠有啥区别吗?

如何使用 rx 从改造中获取请求 url? - 安卓

我如何处理改造错误或获取 URL 请求以检测问题