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
- Retrofit2.0-demo
- rxjava+rxandroid+retrofit2.0使用方法demo讲解
- rxjava2.0+retrofit2.0初试水,小demo
- 仿googleMVP设计模式示例demo,结合rxjava,retrofit2.0
- MVP+Retrofit2+RxJava使用方法demo
- Retrofit2.0
- Retrofit2.0
- IntentService+retrofit2.0下载文件、更新APP(项目一部分demo)
- RxJava2+Retrofit2+MVP+lamdba仿微信朋友圈Demo
- retrofit2兼容rxjava的配置和demo
- Kotlin+RxJava+Retrofit2的简单Demo
- Retrofit2.0使用详解
- Retrofit2.0使用
- Retrofit2.0的使用
- Retrofit2.0源码分析
- Retrofit2.0使用
- Retrofit2.0 的使用
- Retrofit2.0使用详解
- Python datetime模块
- 第四篇:赔率和盘口的特征之一
- SpringBoot自有Tomcat不同方式配置
- python发送各类邮件的主要方法
- 刚入行想做一名程序员
- Retrofit2.0-demo
- vim配置及插件安装管理(超级详细)
- 【厚积薄发】你应该知道的AssetBundle管理机制
- FEA从入门到精通系列 | 文本数据源加载与存储
- 使用线程池(4)
- c++函数对象,常见错误,成员函数
- thinkphp 截取字符串
- Redis管道简单使用及与普通方式效率对比
- js md5 加密算法