2016-04-06 24 views
0

我刚刚正在学习有关Retrofit 2.在我的应用程序意图“UploadToServer” 我有三个异步任务,我需要顺序调用: 1.发布UserName并取回UserId。 2.发布地理位置和其他一些字符串数据并获取“报告单号”。 3.张贴JPG图片以及票号。 我有一个在我的服务器上运行的Web服务。Retrofit 2 Sequential Posts

在标准的手工编码Java中,我会使用活套或其他等效的东西。 如何使用Retrofit 2完成这项工作?哦,我希望有一个进度条移动,尤其是当上传JPG图像文件时。

谢谢。

回答

0

你可以连使用回调调用:

OkHttpClient client = new OkHttpClient.Builder().build(); 

    Retrofit retrofit = new Retrofit.Builder() 
        .baseUrl(BASE_URL_WEBAPI) 
        .addConverterFactory(GsonConverterFactory.create()) 
        .client(client) 
        .build(); 

    mService = retrofit.create(IWebApi.class); 
    ... 
    mService.first_operation(...params...).enqueue(callback); 

回调是预期first_operation结果的类的实例。如果first_operation成功,则调用second_method。

public class Example implements Callback<void> { 

     @Override 
     public void onResponse(Response<LoginResponse> response) { 
      second_method(); 
     } 

     @Override 
     public void onFailure(Throwable t) {   
      t.printStackTrace(); 
     } 
} 

希望它有帮助。

编辑:

我使用ProgressDialog在真正indeterminated。您可以在呼叫服务之前立即显示,并在响应到达时隐藏在onResponse或onFailure方法中。

mProgressDialog = ProgressDialog.show(this, getString(R.string.wait_plaease), 
      getString(R.string.executing_action), true);