【问题标题】:TwitterApiClient: what is Callback signature for POST?TwitterApiClient:POST 的回调签名是什么?
【发布时间】:2016-01-11 18:49:44
【问题描述】:

在为“/1.1/lists/create.json”执行 POST 时指定回调的正确方法是什么?

这里是 Twitter API 文档:https://dev.twitter.com/rest/reference/post/lists/create

MyTwitterApiClient

import com.twitter.sdk.android.core.Callback;
import com.twitter.sdk.android.core.TwitterApiClient;
import com.twitter.sdk.android.core.TwitterSession;
import com.twitter.sdk.android.core.models.User;

import retrofit.http.Field;
import retrofit.http.GET;
import retrofit.http.POST;
import retrofit.http.Query;

class MyTwitterApiClient extends TwitterApiClient {
    public MyTwitterApiClient(TwitterSession session) {
        super(session);
    }

    public CustomService getCustomService() {
        return getService(CustomService.class);
    }
}

interface CustomService {
    @GET("/1.1/users/show.json")
    void show(@Query("user_id") long id, Callback<User> cb);

    @POST("/1.1/lists/create.json")
    // I was incorrectly using @Field instead of @Query, be careful!
    void createList(@Query("name") String name, @Query("mode") String mode, Callback cb);
}

【问题讨论】:

    标签: android twitter callback http-post retrofit


    【解决方案1】:

    我不知道这是否是解决此问题的最佳方法,但它对我有用。通过How can I return String or JSONObject from asynchronous callback using Retrofit? 归功于@tposchel。

    MyTwitterApiClient.java 将回调类型更改为 JsonElement

    interface CustomService {
        @GET("/1.1/users/show.json")
        void show(@Query("user_id") long id, Callback<User> cb);
    
        @POST("/1.1/lists/create.json")
        void createList(@Query("name") String name, @Query("mode") String mode, Callback<JsonElement> cb);
    }
    

    MainActivity.java

    MyTwitterApiClient api = new MyTwitterApiClient(session);
    api.getCustomService().createList("MyListName", "private", new Callback<JsonElement>() {
        @Override
        public void success(Result<JsonElement> result) {
           Log.d(TAG, " [success] status: " + result.response.getStatus());
           JsonElement je = result.data;
           Log.d(TAG, " [success] data: " + je.getAsJsonObject().toString());
        }
        @Override
           public void failure(TwitterException e) { }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-01
      • 2014-09-13
      • 2011-12-15
      • 2022-09-27
      • 1970-01-01
      • 2011-01-09
      • 2022-06-28
      相关资源
      最近更新 更多