【发布时间】:2018-02-07 23:25:14
【问题描述】:
我是改造新手,我正在尝试使用改造和 Instagram API 向特定媒体发送评论。 Instagram API 告诉我,我的请求必须是:
curl -F 'access_token=ACCESS-TOKEN'
-F 'text=This+is+my+comment'
https://api.instagram.com/v1/media/{media-id}/comments
JSON 响应是:
{
"meta":
{
"code": 200
},
"data": null
}
所以我做了这个改造语法:
@FormUrlEncoded
@POST("v1/media/{media_id}/comments")
Call<Object> postComment(
@Path("media_id") String mediaId,
@Field("access_token") String accessToken,
@Field("text") String text);
我的改造服务:
public class RestClient
{
public static RetrofitInstagram getRetrofitService()
{
return new Retrofit.Builder()
.baseUrl(Constants.AUTH_URL)
.addConverterFactory(GsonConverterFactory.create())
.build().create(RetrofitInstagram.class);
}
}
我的电话(在 AlertDialog 中从 EditText 获取文本)是:
Call<Object> call = RestClient.getRetrofitService().postComment(data.get(idx).getId(), access_token, titleEditText.getText().toString());
call.enqueue(new Callback<Object>()
{
@Override
public void onResponse(Call<Object> call, Response<Object> response)
{
Log.d("response comment", ""+response.raw());
Toast.makeText(activity_instagram_feed_search.this, "Comments sent", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<Object> call, Throwable t)
{
Toast.makeText(activity_instagram_feed_search.this, "error", Toast.LENGTH_SHORT).show();
}
});
我的问题是收到代码 400 错误(缺少 client_id 或 access_token URL 参数。)。
这就像 api 认为我在做一个 GET 请求。
我真的很困惑,我会很感激一些智慧:)。
【问题讨论】:
-
curl -F 参数对应于 multipart/form-data 而不是 application/x-www-form-urlencoded,所以你可能不想要@FormUrlEncoded
-
感谢您的建议,我更新了改造语法,但我仍然有与 no access_token 相关的代码 400
标签: android curl retrofit retrofit2 instagram-api