Retrofit 使用心得 @GET@POST带参数不带参数

private void initRetrofit() {
    OkHttpClient client = OkHttp3Utils.getOkHttpSingletonInstance();
    Log.i(TAG, "---->initRetrofit: " + client.toString());

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(Constant.URL_BASE)
            .client(client)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    serverInterface = retrofit.create(MyServerInterface.class);
    call_qiushi = serverInterface.getInfoList(String.format(Constant.URL_LATEST, 1));
    //如果这里String.format(Constant.URL_LATEST, 1)的url是完整的url,则之前.baseUrl(Constant.URL_BASE)这里baseurl将失效
    call_qiushi.enqueue(new Callback() {
        @Override
        public void onResponse(Call call, Response response) {
            if (response.isSuccess() && response.body() != null) {
                progressBar_main.setVisibility(View.GONE);
                List list = response.body().getItems();
                // adapter执行刷新ListView
                adapter.reloadData(list, true);
            }
        }

        @Override
        public void onFailure(Call call, Throwable t) {
            progressBar_main.setVisibility(View.GONE);
            Toast.makeText(mContext, "网络异常,加载失败!", Toast.LENGTH_SHORT).show();
        }
    });
}

 
  
 
  
------@GET 
使用方式-------
------@POST 使用方式------
import java.util.Map ; import okhttp3.MultipartBody ; import okhttp3.RequestBody ; import okhttp3.ResponseBody ; import retrofit2.Call ; import retrofit2.http.Body ; import retrofit2.http.Field ; import retrofit2.http.FieldMap ; import retrofit2.http.FormUrlEncoded ; import retrofit2.http.GET ; import retrofit2.http.Headers ; import retrofit2.http.Multipart ; import retrofit2.http.POST ; import retrofit2.http.Part ; import retrofit2.http.Path ; import retrofit2.http.Query ; import retrofit2.http.QueryMap ; import retrofit2.http.Streaming ; import retrofit2.http.Url ; /** * Created by steven on 16/3/29. */ public interface MyServerInterface { /////////////////////////////////////////////////////////////////////////// // GET网络请求方式 /////////////////////////////////////////////////////////////////////////// /** * 作用:GET请求最简单的写法,无Path参数和Query参数 */ @GET ( "article/list/latest?page=1" ) Call getLatestString () ; /** * 作用:GET请求,指定Path参数和Query参数 */ @GET ( "article/list/{type}?" ) Call getInfoList ( @Path ( " type" ) String type , @Query ( "page" ) int page) ; /** * 作用:GET请求提交数据 * * @return */ @GET ( "MyWeb/RegServlet" ) Call getRegInfo ( @QueryMap Map , String> map) ; /** * 作用:GET请求,指定URL参数 */ @GET Call getInfoList ( @Url String urlString) ; /** * 作用:访问网络,获取网络返回数据 * * @return */ @GET ( "http://img.265g.com/userup/1201/201201071126534773.jpg" ) Call getNetworkData () ; /** * 作用:访问网络,获取网络返回数据 * * @return */ @GET Call getNetworkData ( @Url String urlString) ; /** * 作用:访问网络,下载大文件。 * 默认情况下,Retrofit在处理结果前会将服务器端的Response全部读进内存。 * 如果服务器端返回的是一个非常大的文件,则容易oom。 * * @return */ @Streaming @GET Call getNetworkDataAsync ( @Url String urlString) ; /////////////////////////////////////////////////////////////////////////// // POST网络请求方式 /////////////////////////////////////////////////////////////////////////// /** * 作用:post网络请求,向服务器提交表单域数据 * @param username * @param password * @param age * @return */ @FormUrlEncoded @POST ( "MyWeb/RegServlet" ) Call postFormFields ( @Field ( "username" ) String username , @Field ( "password" ) String password , @Field ( "age" ) String age) ; /** * 作用:post网络请求,向服务器提交表单域数据 * @return */ @FormUrlEncoded @POST ( "MyWeb/RegServlet" ) Call postFormFieldMap ( @FieldMap Map , String> map) ; /** * 作用:POST网络请求,上传单个文件,上传后的文件名称已经被指定 * @param * @return */ @Multipart @POST ( "MyWeb/UploadServlet" ) Call postUploadFile ( @Part ( "uploadfile \" ;filename= \" myuploadimg.png" ) RequestBody requestBody) ; /** * 作用:POST网络请求,上传多个文件,同时上传表单域数据 * @param * @return */ @POST ( "MyWeb/UPloadServlet" ) Call postUploadFilesMultipartBody ( @Body MultipartBody multipartBody) ; }

你可能感兴趣的:(Android积累)