Retrofit2.0 基本使用

相关文章:

Android 知识点总结(目录) https://blog.csdn.net/a136447572/article/details/81027701

Retrofit2.0

// Retrofit库
    implementation 'com.squareup.retrofit2:retrofit:2.0.2'
    // Okhttp库
    implementation 'com.squareup.okhttp3:okhttp:3.1.2'

    implementation 'com.squareup.retrofit2:converter-gson:2.0.2'
 
package com.example.administrator.rxjavademo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.http.Field;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.HTTP;
import retrofit2.http.Headers;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.PartMap;
import retrofit2.http.Path;
import retrofit2.http.Query;

public class RetrofitActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_retrofit);

//        initView();
        initData();

    }


    private void initView() {

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://www.apiopen.top/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        // 创建 网络请求接口 的实例
        final GetRequest_Interface request = retrofit.create(GetRequest_Interface.class);
        //对 发送请求 进行封装
//        Call call = request.getCall();

        Call call1 = request.getCall1("大同");

        //发送网络请求(异步)
        call1.enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                //请求处理 ,输出结果

                WeatherBeans beans = response.body();

                Log.i("info", "1--" + beans.getData().getYesterday().getDate() + "--" + beans.getData().getYesterday().getHigh());

            }

            @Override
            public void onFailure(Call call, Throwable t) {
                Log.i("info", "请求失败");
            }
        });


    }

    private void initData() {

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://xxx.xxx.xxx.xxx:xxx")
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        PostRequest_Interface request = retrofit.create(PostRequest_Interface.class);

//        Call call = request.postLogin1("wangwu","111");

        Map map = new HashMap<>();
        map.put("LoginName","wangwu");
        map.put("LoginPass","111");
        Call call = request.postLogin3(map);

//        //post 提交file文件
//
//        RequestBody username = RequestBody.create(MediaType.parse(""), "wangwu");
//        RequestBody password = RequestBody.create(MediaType.parse(""), "111");
//
//        MultipartBody.Part filePart = MultipartBody.Part.createFormData("file", "test.txt", new RequestBody() {
//        });
//        Call call3 = request.postLogin2(username, password, filePart);

//        // @PartMap
//        // 实现和上面同样的效果
//        Map fileUpload2Args = new HashMap<>();
//        fileUpload2Args.put("name", name);
//        fileUpload2Args.put("age", age);
//        //这里并不会被当成文件,因为没有文件名(包含在Content-Disposition请求头中),但上面的 filePart 有
//        //fileUpload2Args.put("file", file);
//        Call call4 = service.testFileUpload2(fileUpload2Args, filePart); //单独处理文件
//        ResponseBodyPrinter.printResponseBody(call4);







        call.enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {

                PostLoginBeans postLoginBeans = response.body();
                Log.i("info",postLoginBeans.getData().get(0).getCname());

            }

            @Override
            public void onFailure(Call call, Throwable t) {

            }
        });

    }
}
    interface PostRequest_Interface{
    //    http://120.76.247.101:836/api/User/UserLogin
        //LoginName  wangwu
        //LoginPass  111

        @POST("/api/User/UserLogin")
        @FormUrlEncoded
        Call postLogin1(@Field("LoginName") String LoginName
                ,@Field("LoginPass") String pass);

        @POST("/api/User/UserLogin")
        @FormUrlEncoded
        Call postLogin3(@FieldMap Map map);

        //post  提交file文件
        @POST("/api/User/UserLogin")
        @Multipart
        Call postLogin2(@Part("LoginName") RequestBody LoginName
                , @Part("LoginPass") RequestBody pass, @Part MultipartBody.Part file);

        @POST("/form")
        @Multipart
        Call postLogin4(@PartMap Map args);


    }

interface GetRequest_Interface{
    //https://www.apiopen.top/weatherApi?city=大同

    @GET("/weatherApi?city=大同")
    Call getCall();

    @GET("weatherApi?")
    Call getCall1(@Query("city") String city);

    //    @Headers("Authorization: authorization")
    //    @GET("/weatherApi?city=大同")
    //    Call getCall();
}




你可能感兴趣的:(andriod)