我已经使用身份验证在翻新中实现了GET和Post Request。
用户名= admin
Passwor ='admin'
使用网址参数query
<uses-permission android:name="android.permission.INTERNET" />
implementation 'com.android.volley:volley:1.1.0'
将库添加到
gradle
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'com.google.code.gson:gson:2.8.5'
Api类
public class Api {
private static final String BASE_URL="https://your_url";
private static Api instance;
private final IApiCall iApiCallInterface;
private Api() {
Gson gson = new GsonBuilder().setLenient().create();
final OkHttpClient okHttpClient = new OkHttpClient.Builder()
.connectTimeout(60, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.readTimeout(60, TimeUnit.SECONDS)
.build();
Retrofit retrofit = new
Retrofit.Builder().client(okHttpClient).baseUrl(BASE_URL)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create(gson)).build();
iApiCallInterface = retrofit.create(IApiCall.class);
}
public static Api start() {
return instance = instance == null ? new Api() : instance;
}
public Observable<Example> getSendMoneyCountries() {
return iApiCallInterface.getCategoryList();
}
}
Crete接口名称IApiCall
public interface IApiCall {
//response in in json array
@Headers("Content-Type: application/json")
@GET("/json")
Observable<Example> getCategoryList();
}
主要活动代码
private static Api api;
api = Api.start();
api.getSendMoneyCountries()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableObserver<Example>() {
@Override
public void onNext(Example response) {
//clear array list
//response store in array list
}
@Override
public void onError(Throwable e) {
//show toast msg
}
@Override
public void onComplete() {
//perform db insertion operation seperate thread
//check for duplicate
}
});
答案 0 :(得分:0)
排球要求课
public static int REQUEST_TIME_OUT = 1000 * 2 * 60;
public class VolleyRequestQueue {
private static VolleyRequestQueue mInstance;
private static Context mContext;
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
private LockatedJSONObjectRequest mLockatedJSONObjectRequest;
public static final String REQUEST_TAG = "API-REQUEST";
RequestQueue requestQueue;
private VolleyRequestQueue(Context context) {
mContext = context;
mRequestQueue = getRequestQueue();
}
public static synchronized VolleyRequestQueue getInstance(Context context) {
if (mInstance == null) {
mInstance = new VolleyRequestQueue(context);
}
return mInstance;
}
public void sendRequest(String tag, int method, String url, JSONObject jsonObject,
Response.Listener<JSONObject> listener, Response.ErrorListener errorListener) {
int socketTimeout = Utilities.REQUEST_TIME_OUT;
requestQueue = mInstance.getRequestQueue();
mLockatedJSONObjectRequest = new LockatedJSONObjectRequest(method, url, jsonObject, listener, errorListener);
mLockatedJSONObjectRequest.setTag(tag);
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
mLockatedJSONObjectRequest.setRetryPolicy(policy);
requestQueue.add(mLockatedJSONObjectRequest);
}
public void sendRequest(String tag, int method, String url, JSONObject jsonObject,
Response.Listener<String> listener, Response.ErrorListener errorListener, final String message) {
int socketTimeout = Utilities.REQUEST_TIME_OUT;
requestQueue = mInstance.getRequestQueue();
StringRequest sr = new StringRequest(method, url, listener, errorListener) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("msg", message);
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("Content-Type", "application/x-www-form-urlencoded");
return params;
}
};
sr.setTag(tag);
RetryPolicy policy = new DefaultRetryPolicy(socketTimeout, DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
sr.setRetryPolicy(policy);
requestQueue.add(sr);
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
Cache cache = new DiskBasedCache(mContext.getCacheDir(), 10 * 1024 * 1024);
Network network = new BasicNetwork(new HurlStack());
mRequestQueue = new RequestQueue(cache, network);
mRequestQueue.start();
}
return mRequestQueue;
}
public ImageLoader getImageLoader() {
getRequestQueue();
if (mImageLoader == null) {
mImageLoader = new ImageLoader(this.mRequestQueue, new LruBitmapCache());
}
return this.mImageLoader;
}
public LockatedJSONObjectRequest getLockatedJSONObjectRequest() {
return mLockatedJSONObjectRequest;
}}
JsonObjectRequest
public class JSONObjectRequest extends JsonObjectRequest {
public JSONObjectRequest(int method, String url, JSONObject jsonRequest,
Response.Listener<JSONObject> listener, Response.ErrorListener errorListener){
super(method, url, jsonRequest, listener, errorListener);
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError
{
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
@Override
public String getBodyContentType() {
return "application/x-www-form-urlencoded; charset=UTF-8";
}
@Override
public RetryPolicy getRetryPolicy()
{
return super.getRetryPolicy();
}}
JsonArray请求类
public class JSONArrayRequest extends JsonArrayRequest {
public JSONArrayRequest(int method, String url, JSONArray jsonRequest, Response.Listener<JSONArray> listener,
Response.ErrorListener errorListener) {
super(method, url, jsonRequest, listener, errorListener);
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError
{
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
@Override
public RetryPolicy getRetryPolicy()
{
return super.getRetryPolicy();
}
}
错误类别
public class LockatedRequestError
{
public static void onRequestError(Context context, VolleyError error)
{
if (error instanceof NoConnectionError)
{
//show tost: NoConnectionError
} else if (error instanceof AuthFailureError)
{
//show tost: AuthFailureError
} else if (error instanceof ServerError)
{
//show tost: server_error
} else if (error instanceof NetworkError)
{
//show tost: network_error
} else if (error instanceof ParseError)
{ //show tost: parse_error
} else if (error instanceof TimeoutError)
{
{ //show tost: TimeoutError
}
}}
从活动调用-GET api JsonObject
类实现Response.Listener,Response.ErrorListener
public void callApi() {
progressBar.setVisibility(View.VISIBLE);
mLockatedPreferences = new LockatedPreferences(getActivity());
String url = "your_url";
mQueue = VolleyRequestQueue.getInstance(getActivity()).getRequestQueue();
JSONObjectRequest mJSONObjectRequest = new JSONObjectRequest(Request.Method.GET,
url, null, this, this);
mJSONObjectRequest.setTag(REQUEST_TAG);
mQueue.add(lockatedJSONObjectRequest);
}