say*_*now 5 android ruby-on-rails http-post retrofit
我之前已成功使用Square的Retrofit进行@GETWeb API调用,但是当尝试@BODY在@POST调用中发送JSON时,在服务器(Rails)上,JSON显示为参数而不是正文请求.
我的理解是将该@BODY方法参数添加到正文中的请求中.
知道我做错了什么吗?
WebApi:
@POST("/api/v1/gear/scans.json")
Response postScans(
@Header(HEADER_AUTH) String token,
@Body JsonObject scans
);
Run Code Online (Sandbox Code Playgroud)
提出网络请求:
RestAdapter restAdapter = new RestAdapter.Builder()
.setServer(api_url)
.build();
WebApi webApi = restAdapter.create(AssetsWebApi.class);
Response response = webApi.postScans(auth_token, valid_json);
Run Code Online (Sandbox Code Playgroud)
say*_*now 12
事实证明,如果要将数据作为请求体的一部分进行POST,则需要将API接口方法注释为@FormUrlEncoded并传递正文的内容,@Field如下所示:
@FormUrlEncoded
@POST("/api/v1/gear/scans.json")
Response postScans(
@Header(HEADER_AUTH) String token,
@Field("scans") JsonArray scans
);
Run Code Online (Sandbox Code Playgroud)
@Rickster的异步调用:
@POST("/api/v1/gear/scans.json")
void postScans(
@Header(HEADER_AUTH) String token,
@Body JsonObject scans,
Callback<PostSuccessResponseWrapper> callback
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8509 次 |
| 最近记录: |