补上上次网络请求没写retrofit

//一些需要用到的依赖,
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
//retrofit依赖
compile 'com.squareup.retrofit2:retrofit:2.1.0'
//retrofit自带的一些解析
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.jakewharton:butterknife:8.4.0'
//截断器
compile 'com.squareup.okhttp3:logging-interceptor:3.4.2'
//gson依赖
compile 'com.google.code.gson:gson:2.8.0'
========================================================================================
正文:**************get请求的界面*********************************************
public class RetrofitGetActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ok_http_get);
        ButterKnife.bind(this);
    }

    @OnClick(R.id.btn_get)
    public void onClick() {
        // 去执行请求
        RetrofitNet.getInstance().mUserRetrofitApi.getData("language:java",1).enqueue(new Callback<ResponseBody>() {

            // 请求成功
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                // 可以做UI的更新
                Toast.makeText(RetrofitGetActivity.this, "onResponse:"+response.code(), Toast.LENGTH_SHORT).show();
            }

            // 请求失败
            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                Toast.makeText(RetrofitGetActivity.this, "onFailure:"+t.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
    }
}
======================================================================
public class RetrofitNet {

    private static RetrofitNet mRetrofitNet;
    public final UserRetrofitApi mUserRetrofitApi;

    private RetrofitNet() {

        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .build();

        // Retrofit初始化
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://api.github.com")// Retrofit必须要添加的baseUrl
                .client(okHttpClient)// 给Retrofit设置OKHttpClient,暂时只是为了使用拦截器
                .addConverterFactory(GsonConverterFactory.create())// 添加Gson转换器
                .build();

        // 实现接口请求
        mUserRetrofitApi = retrofit.create(UserRetrofitApi.class);
    }
    public static synchronized RetrofitNet getInstance(){
        if (mRetrofitNet==null){
            mRetrofitNet = new RetrofitNet();
        }
        return mRetrofitNet;
    }
}
=============================================================================
/ 通过注解构建请求
public interface UserRetrofitApi {
    /**
     * Retrofit使用:需要创建一个接口,构建请求,通过Retrofit的Create方法
     */

//    Request request = new Request.Builder()
//            .url(url)
//            .get()
//            .build();
    @GET("https://api.github.com/search/repositories")
    Call<ResponseBody> getData(@Query("q") String q, @Query("page") int page);

    @POST("http://admin.syfeicuiedu.com/Handler/UserHandler.ashx?action=register")
    Call<UserResult> register(@Body User user);

    /**
     * 注解:
     * 消息结构方面的注解
     * 1. 请求方式:@GET @POST
     * 2. 请求路径:url 单独讲解
     * 3. 请求头:
     *
     * @Headers({"Accept-Language:en","X-type:zxc","",""})添加头信息
     * @Header("X-type")String type是在方法参数里面,动态修改添加的头信息
     * 4. 请求体:@Body User body
     * @GET @POST @Headers @Header @Body
     * <p>
     * Url 处理方面注解
     * 1. 可替换块:https://api.github.com/repos/{owner}/{repo}
     * @Path("owner")String owe
     * <p>
     * 2.查询参数:https://api.github.com/search/repositories?q=language:java&page=1
     * get请求需要动态传入查询参数的时候
     * @Query("q")String q
     * @QueryMap Map<String,String> map
     * <p>
     * 3. 整合:https://api.github.com/repos/{owner}/{repo}?q=language:java&page=1
     * 可以一起使用,没有影响
     * <p>
     * 4. 表单提交:POST https://api.github.com/search/repositories
     * 参数a ...
     * 参数b ...
     * @FormUrlEncoded
     * @Field("a") @FieldMap Map<>
     * <p>
     * 5. 多部分提交:@Multipart
     * @Part
     */

    @Headers({"Accept-Language:en", "X-type:zxc", "", ""})
    @POST("")
    Call<ResponseBody> getA(@Header("X-type") String type, @Body User body);

    @GET("https://api.github.com/repos/{owner}/{repo}")
    Call<ResponseBody> getB(@Path("owner") String owner, @Path("repo") String repo);

    @GET("https://api.github.com/{search}/repositories")
    Call<ResponseBody> getC(@Path("search") String sear, @Query("q") String q, @Query("page") int page, @QueryMap Map<String, String> map);

    @FormUrlEncoded
    @POST("")
    Call<ResponseBody> getD(@Field("a") String a, @Field("b") String b, @FieldMap Map<String, String> map);

    @Multipart
    @POST("")
    Call<ResponseBody> getE(@Part("photo") RequestBody requestBody, @Part("username") String name);

    @POST("http://wx.feicuiedu.com:9094/yitao/UserWeb?method=update")
    @Multipart
    Call<ResponseBody> getresult(@Part("user")Multsult user);
    @POST("http://wx.feicuiedu.com:9094/yitao/UserWeb?method=register")
    @FormUrlEncoded
    Call<ResponseBody>  getformat(@Field("username")String name,@Field("password")String password);

}
==================================================================================
/ 通过注解构建请求
public interface UserRetrofitApi {
    /**
     * Retrofit使用:需要创建一个接口,构建请求,通过Retrofit的Create方法
     */

//    Request request = new Request.Builder()
//            .url(url)
//            .get()
//            .build();
    @GET("https://api.github.com/search/repositories")
    Call<ResponseBody> getData(@Query("q") String q, @Query("page") int page);

    @POST("http://admin.syfeicuiedu.com/Handler/UserHandler.ashx?action=register")
    Call<UserResult> register(@Body User user);

    /**
     * 注解:
     * 消息结构方面的注解
     * 1. 请求方式:@GET @POST
     * 2. 请求路径:url 单独讲解
     * 3. 请求头:
     *
     * @Headers({"Accept-Language:en","X-type:zxc","",""})添加头信息
     * @Header("X-type")String type是在方法参数里面,动态修改添加的头信息
     * 4. 请求体:@Body User body
     * @GET @POST @Headers @Header @Body
     * <p>
     * Url 处理方面注解
     * 1. 可替换块:https://api.github.com/repos/{owner}/{repo}
     * @Path("owner")String owe
     * <p>
     * 2.查询参数:https://api.github.com/search/repositories?q=language:java&page=1
     * get请求需要动态传入查询参数的时候
     * @Query("q")String q
     * @QueryMap Map<String,String> map
     * <p>
     * 3. 整合:https://api.github.com/repos/{owner}/{repo}?q=language:java&page=1
     * 可以一起使用,没有影响
     * <p>
     * 4. 表单提交:POST https://api.github.com/search/repositories
     * 参数a ...
     * 参数b ...
     * @FormUrlEncoded
     * @Field("a") @FieldMap Map<>
     * <p>
     * 5. 多部分提交:@Multipart
     * @Part
     */

    @Headers({"Accept-Language:en", "X-type:zxc", "", ""})
    @POST("")
    Call<ResponseBody> getA(@Header("X-type") String type, @Body User body);

    @GET("https://api.github.com/repos/{owner}/{repo}")
    Call<ResponseBody> getB(@Path("owner") String owner, @Path("repo") String repo);

    @GET("https://api.github.com/{search}/repositories")
    Call<ResponseBody> getC(@Path("search") String sear, @Query("q") String q, @Query("page") int page, @QueryMap Map<String, String> map);

    @FormUrlEncoded
    @POST("")
    Call<ResponseBody> getD(@Field("a") String a, @Field("b") String b, @FieldMap Map<String, String> map);

    @Multipart
    @POST("")
    Call<ResponseBody> getE(@Part("photo") RequestBody requestBody, @Part("username") String name);

    @POST("http://wx.feicuiedu.com:9094/yitao/UserWeb?method=update")
    @Multipart
    Call<ResponseBody> getresult(@Part("user")Multsult user);
    @POST("http://wx.feicuiedu.com:9094/yitao/UserWeb?method=register")
    @FormUrlEncoded
    Call<ResponseBody>  getformat(@Field("username")String name,@Field("password")String password);

}
=====================================================================================实体类
public class Multsult {
     String username;
    String password;

    public Multsult() {
    }

    public Multsult(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public String toString() {
        return "Multsult{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
******************************post请求********************
public class RetrofitPostActivity extends AppCompatActivity {

    @BindView(R.id.et_name)
    EditText mEtName;
    @BindView(R.id.et_password)
    EditText mEtPassword;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ok_http_post);
        ButterKnife.bind(this);

    }

    @OnClick(R.id.btn_register)
    public void onClick() {
        // 去进行注册的请求
        User user = new User(mEtName.getText().toString(), mEtPassword.getText().toString());

        RetrofitNet.getInstance().mUserRetrofitApi.register(user).enqueue(new Callback<UserResult>() {
            @Override
            public void onResponse(Call<UserResult> call, Response<UserResult> response) {
                if (response.isSuccessful()) {
                    UserResult userResult = response.body();
                    if (userResult != null) {
                        Toast.makeText(RetrofitPostActivity.this, "请求成功" + userResult.getErrmsg(), Toast.LENGTH_SHORT).show();
                    }
                }
            }

            @Override
            public void onFailure(Call<UserResult> call, Throwable t) {
                Toast.makeText(RetrofitPostActivity.this, "请求失败", Toast.LENGTH_SHORT).show();
            }
        });

    }
}
========================================================================
实体类
public class UserResult {


    /**
     * errcode : 1
     * errmsg : 注册成功!
     * tokenid : 171
     */

    @SerializedName("errcode")
    private int code;
    private String errmsg;
    private int tokenid;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getErrmsg() {
        return errmsg;
    }

    public void setErrmsg(String errmsg) {
        this.errmsg = errmsg;
    }

    public int getTokenid() {
        return tokenid;
    }

    public void setTokenid(int tokenid) {
        this.tokenid = tokenid;
    }
}
==================================================================================
附上下载demo地址
链接:http://pan.baidu.com/s/1nvLXl3N 密码:bgs1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值