Okhttp和Retrofit的get,post请求

为什么要用Okhtt 和Retrofit

1.可以配置不同HTTP client来实现网络请求,如okhttp、httpclient等
2.请求的方法参数注解都可以定制
3.支持同步、异步和RxJava
4.超级解耦
5.可以配置不同的反序列化工具来解析数据,如json、xml等
6.使用非常方便灵活
7.框架使用了很多设计模式

1添加网络权限,添加依赖

 <uses-permission android:name="android.permission.INTERNET/>

    compile 'com.squareup.retrofit2:retrofit:2.2.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile "com.squareup.retrofit2:adapter-rxjava2:2.2.0"

2封装类

这个代码相信大家都应该会 把需要的属性,封装起来

3 接口

package com.example.bx.okhttp_01;


import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Created by BX on 2017/8/18.
 */

public interface IUserBiz {
    @GET("get?")
    Call<Resultcode> getResult(@Query("phone")String phone,@Query("key") String key);

    @POST("get?")
    @FormUrlEncoded
    Call<Resultcode> postResult(@Field("phone")String phone ,@Field("key") String key);
}

Activity 中的代码

package com.example.bx.okhttp_01;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import okhttp3.OkHttpClient;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        OkRetrofit_Get();
        OkRetrofit_Post();

    }
    private void OkRetrofit_Post() {
        OkHttpClient client=new OkHttpClient.Builder()
                .build();

        Retrofit retrofit=new Retrofit.Builder()
                .baseUrl("http://apis.juhe.cn/mobile/")
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();
        IUserBiz userBiz=retrofit.create(IUserBiz.class);
        Call<Resultcode> call=userBiz.postResult("13026167375","69eae34c7c30b963a0ec2eeefc05a37d");
        call.enqueue(new Callback<Resultcode>() {
            @Override
            public void onResponse(Call<Resultcode> call, Response<Resultcode> response) {
                Log.d(TAG, "onResponse: "+ response.body().getResult().getCity());
            }

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

            }
        });
    }
    private void OkRetrofit_Get() {
        OkHttpClient client=new OkHttpClient.Builder()
                .build();

        Retrofit retrofit=new Retrofit.Builder()
                .baseUrl("http://apis.juhe.cn/mobile/")
                .addConverterFactory(GsonConverterFactory.create())
                .client(client)
                .build();
        IUserBiz userBiz=retrofit.create(IUserBiz.class);
        Call<Resultcode> call=userBiz.getResult("13026167375","69eae34c7c30b963a0ec2eeefc05a37d");
        call.enqueue(new Callback<Resultcode>() {
            @Override
            public void onResponse(Call<Resultcode> call, Response<Resultcode> response) {
                Log.d(TAG, "onResponse: "+ response.body().getResult().getCity());
            }

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

            }
        });
    }



}

这些都是根据网络资料上写出来的,数据都请求到了 相对比较简单
初学者可以学一下 ,get和post 请求代码相似度比较高,如果要深
入系统的学习多去官网上看看

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值