Retrofit2.0-demo

来源:互联网 发布:自动化设备编程 编辑:程序博客网 时间:2024/06/13 06:23


package com.payment.ktb;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import com.payment.ktb.utils.HttpUtils;import com.sdsmdg.tastytoast.TastyToast;import org.json.JSONObject;import java.util.HashMap;import java.util.Map;import rx.Subscriber;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();    }    private void init() {        Map<String,String> map = new HashMap<>();        map.put("os","ANDROID");        map.put("version","8");        HttpUtils.getInstance().getResult("shopSdkVersionState", map, new Subscriber<JSONObject>() {            @Override            public void onCompleted() {                TastyToast.makeText(getApplicationContext(), "商户已经注册成功", TastyToast.LENGTH_SHORT, TastyToast.ERROR);            }            @Override            public void onError(Throwable e) {            }            @Override            public void onNext(JSONObject jsonObject) {            }        });    }}





package com.payment.ktb.utils;import android.util.Base64;import android.util.Log;import com.payment.ktb.constant.HttpUrls;import org.json.JSONObject;import java.util.HashMap;import java.util.Map;import java.util.concurrent.TimeUnit;import okhttp3.OkHttpClient;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import retrofit2.converter.scalars.ScalarsConverterFactory;import retrofit2.http.Field;import retrofit2.http.FormUrlEncoded;import retrofit2.http.POST;import rx.Observable;import rx.Subscriber;import rx.android.schedulers.AndroidSchedulers;import rx.functions.Func1;import rx.schedulers.Schedulers;/** * Created by syd on 2016/8/22. */public class HttpUtils {    private static final int DEFAULT_TIMEOUT = 20;    private Retrofit retrofit;    private RequestSerives RequestSerives;    private static HttpUtils instance;    /**     * 1.Service接口     */    public interface RequestSerives {        @FormUrlEncoded        @POST("api/action")        Observable<String> getString(@Field("action") String action,                               @Field("data") String data);    }    /**     * 2.Retrofit实例     */    //构造方法私有    private HttpUtils() {        OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder();        httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);        retrofit = new Retrofit.Builder()                .client(httpClientBuilder.build())                .addConverterFactory(ScalarsConverterFactory.create())                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                .baseUrl(HttpUrls.URL)                .build();        RequestSerives = retrofit.create(RequestSerives.class);    }    public synchronized static HttpUtils getInstance() {        if (instance == null) {            instance = new HttpUtils();        }        return instance;    }    /**     *     * @param postAction     * @param postData     * @param subscriber     */    public void getResult(String postAction, Map<String,String> postData, Subscriber<JSONObject> subscriber) {        /**         * 将map转成json串         */        String unAESPostData = new JSONObject(postData).toString();        Log.e("sydlog","unAESPostData=" + unAESPostData);        String base64unAESPostData = Base64.encodeToString(unAESPostData.getBytes(),Base64.DEFAULT);        /**         * 对数据进行AES加密         */        String  AESPostData = null;        try {            AESPostData = AESUtils.encode(base64unAESPostData);        } catch (Exception e) {        }        RequestSerives.getString(postAction,AESPostData)                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .map(new Func1<String, JSONObject>() {                    @Override                    public JSONObject call(String s) {                        try {                            return new JSONObject(AESUtils.decode(s.toString()));                        } catch (Exception e) {                            e.printStackTrace();                            Map<String,String> AESDecodeErrorRespnse = new HashMap<String, String>();                            AESDecodeErrorRespnse.put("code","AESDecodeErrorRespnse");                            AESDecodeErrorRespnse.put("msg","AES解密异常!");                            return new JSONObject(AESDecodeErrorRespnse);                        }                    }                })                .subscribe(subscriber);    }}






0 0
原创粉丝点击