use*_*760 25 java android get retrofit
我正在使用Retrofit在我的Android应用程序中进行api调用.我必须提交@Body of JSON
@GET("api/")
void getData(@Body UserPostRequestBody request)
Run Code Online (Sandbox Code Playgroud)
我收到错误消息
retrofit.RetrofitError: apiCall: Non-body HTTP method cannot contain @Body or @TypedOutput.
Run Code Online (Sandbox Code Playgroud)
你知道吗?
har*_*thk 13
要与您一起发送数据,您Get Request可以执行以下操作:
//sending data as a url parameter
@GET("/group/{id}/users")
List<User> groupList(@Path("id") int groupId);
Run Code Online (Sandbox Code Playgroud)
正如在这个SO答案中所说的那样,GET的服务器语义受到限制,使得一个主体(如果有的话)对请求 - Roy Fielding没有语义含义.
中获取尽可能解释的定义在这里在这个答案解释说,身体是不应该意味着什么,所以改造不允许添加的身体.也就是说,服务器不遵循这种格式是不正确的.服务器完全有可能拥有一个不仅需要,而且需要一个正文的GET端点.这将是"糟糕"的架构,但Retrofit限制库可以不必要地做什么似乎有点愚蠢.
此外,各种HTTP方法对它们所支持的内容有不同的定义.例如,GET获取信息,POST通过向服务器提供信息来创建新条目/对象,PUT更新现有条目/对象等.问题是,将复杂数据传递到服务器的最简单方法,尤其是在使用时改造,是通过使用JSON.因此,在提供复杂过滤器的同时从服务器获取信息的理想方式是发送JSON主体以及GET请求.不幸的是,没有HTTP请求方法允许在规范下进行此操作.
| 归档时间: |
|
| 查看次数: |
23660 次 |
| 最近记录: |