android – Retrofit @GET – 如何显示请求字符串?

前端之家收集整理的这篇文章主要介绍了android – Retrofit @GET – 如何显示请求字符串?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用一个使用Retrofit创建一个休息的客户端的 Android应用程序.为了调试网络调用,我想显示或转储实际被调用的url.有没有办法做到这一点?我已经在下面列出了一些代码,显示了应用程序当前如何使用改进.

客户端界面定义:

import retrofit.Callback;
import retrofit.http.Body;
import retrofit.http.GET;
import retrofit.http.Headers;
import retrofit.http.POST;
import retrofit.http.Path;

// etc...

 public interface MyApiClient {

    @Headers({
            "Connection: close"
    })

    @GET("/{userId}/{itemId}/getCost.do")
    public void get(@Path("userId") String userId,@Path("itemId") String userId,Callback<score> callback);


//....etc 

}

使用生成客户端的服务:

// etc...
    import javax.inject.Inject;
    import retrofit.Callback;
    import retrofit.RetrofitError;
    import retrofit.client.Response;


@Inject
MyApiClient myApiClient;

// etc...
               myApiClient.getCost(myId,itemId,new Callback<Cost>() {
                     @Override
                    public void success(Cost cost,Response response) {
                        Log.d("Success: %s",String.valueOf(cost.cost));
                        if (cost.cost != -1) {
                            processFoundCost(cost);
                        } else {
                            processMissingCost(itemId);
                        }
                        stopTask();
                    }

                    @Override
                    public void failure(RetrofitError error) {
                        handleFailure(new CostFailedEvent(),null);
                    }
                });
            }

解决方法

RetrofitError有一个返回URL的getUrl()方法.

响应在回调中也有一个getUrl()方法.

也可以根据this question指定日志级别:

RestAdapter adapter = (new RestAdapter.Builder()).
//...
           setLogLevel(LogLevel.FULL).setLog(new AndroidLog("YOUR_LOG_TAG"))

虽然基于docs,LogLevel.BASIC应该做你所需要的.

BASIC
Log only the request method and URL and the response status code and execution time.

猜你在找的Android相关文章