Volly의 간편한 패키지
우선 Volly Bean을 말씀드리자면 모두 get입니다. set은 설명할 것이 없습니다.
import java.util.Map;
/**
* @author penguinfool
* Volly
*/
public class VollyBean {
int method;
String url;
Map headers;
Map params;
/**
*
*/
public VollyBean() {
super();
}
/**
* @param method
* @param url
* @param headers
* @param params
*/
public VollyBean(int method, String url, Map headers,
Map params) {
super();
this.method = method;
this.url = url;
this.headers = headers;
this.params = params;
}
/**
* @return
*/
public int getMethod() {
return method;
}
/**
* @param method
*/
public void setMethod(int method) {
this.method = method;
}
/**
* @return
*/
public String getUrl() {
return url;
}
/**
* @param url
*/
public void setUrl(String url) {
this.url = url;
}
/**
* @return
*/
public Map getHeaders() {
return headers;
}
/**
* @param headers
*/
public void setHeaders(Map headers) {
this.headers = headers;
}
/**
* @return
*/
public Map getParams() {
return params;
}
/**
* @param params
*/
public void setParams(Map params) {
this.params = params;
}
}
Volly Request Manager 클래스, 이 안에 요청을 봉인하는 방법, 요청 일등, 그의 요청 성공과 실패는 모두 Volly 프레임워크에 봉인된 것이다. 우리는 결과를 우리가 필요로 하는 인터페이스로 되돌릴 수 있는 리셋을 사용자 정의할 수 있다
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
import android.content.Context;
import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request.Method;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.rgsc.base.core.net.NetUtils;
/**
* @author penguinfool
*
*/
public class VollyRequestManager {
private static final String TAG = "VollyRequestManager";
private static volatile VollyRequestManager instance = null;
private RequestQueue mRequestQueue = null;
private static final int TIMEOUT = 5000;
/**
* @param context
*
*/
private VollyRequestManager(Context context) {
initRequestqueue(context);
}
/**
* mRequestQueue
*
* @param context
*
*/
public void initRequestqueue(Context context) {
this.mRequestQueue = Volley.newRequestQueue(context);
}
/**
* @param context
*
* @return
*/
public static VollyRequestManager getInstance(Context context) {
if (null == instance) {
synchronized (VollyRequestManager.class) {
if (null == instance) {
instance = new VollyRequestManager(context);
}
}
}
return instance;
}
/**
* @return
*/
public RequestQueue getRequestQueue() {
return this.mRequestQueue;
}
/**
* @param url
*
* @param headers
*
* @param params
*
* @param successListener
*
* @param errorListener
*
* @throws UnsupportedEncodingException
*
*/
private void doGet(String url, final Map headers,
final Map params,
Response.Listener successListener,
Response.ErrorListener errorListener)
throws UnsupportedEncodingException {
String requestUrl = null;
// GET , URL
if (params != null && !params.isEmpty()) {
String param = urlEncode(params);
requestUrl = url + "?" + param;
} else {
requestUrl = url;
}
System.out.println("### volley requet:" + url);
StringRequest stringRequest = new StringRequest(Method.GET, requestUrl,
successListener, errorListener) {
//
@Override
public Map getHeaders() throws AuthFailureError {
if (headers != null && !headers.isEmpty()) {
return headers;
} else {
return Collections.emptyMap();
}
}
// params null
@Override
protected Map getParams() throws AuthFailureError {
return params;
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(TIMEOUT,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
mRequestQueue.add(stringRequest);
}
/**
* @param url
*
* @param headers
*
* @param params
*
* @param successListener
*
* @param errorListener
*
*/
private void doPost(String url, final Map headers,
final Map params,
Response.Listener successListener,
Response.ErrorListener errorListener) {
// L.i(TAG + "doPost", url);
// for (Map.Entry entry :headers.entrySet()) {
// System.out.println("hkey= " + entry.getKey() + " and hvalue= " +
// entry.getValue());
// }
//
//
// for (Map.Entry entry :params.entrySet()) {
// System.out.println("pkey= " + entry.getKey() + " and pvalue= " +
// entry.getValue());
// }
StringRequest stringRequest = new StringRequest(Method.POST, url,
successListener, errorListener) {
@Override
protected Map getParams() throws AuthFailureError {
return params;
}
@Override
public Map getHeaders() throws AuthFailureError {
if (headers != null && !headers.isEmpty()) {
return headers;
} else {
return Collections.emptyMap();
}
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(TIMEOUT,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
mRequestQueue.add(stringRequest);
}
/**
* @param url
*
* @param headers
*
* @param params
*
* @param successListener
*
* @param errorListener
*
* @throws Exception
*
*/
private void doPut(String url, final Map headers,
final Map params,
Response.Listener successListener,
Response.ErrorListener errorListener) {
String requestUrl = null;
/*
* if (params != null && !params.isEmpty()) { String param =
* urlEncode(params); requestUrl = url + "?" + param; } else {
* requestUrl = url; } L.i(TAG, requestUrl);
*/
StringRequest stringRequest = new StringRequest(Method.PUT, url,
successListener, errorListener) {
//
@Override
public Map getHeaders() throws AuthFailureError {
if (headers != null && !headers.isEmpty()) {
return headers;
} else {
return Collections.emptyMap();
}
}
@Override
protected Map getParams() throws AuthFailureError {
return params;
}
};
stringRequest.setRetryPolicy(new DefaultRetryPolicy(TIMEOUT,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
mRequestQueue.add(stringRequest);
}
/**
* ,
*/
private void doDelete() {
// .......
}
/**
* @param vollyBean
* bean
* @param successListener
*
* @param errorListener
*
* @throws UnsupportedEncodingException
*
*/
public void request(VollyBean vollyBean,
Response.Listener successListener,
Response.ErrorListener errorListener)
throws UnsupportedEncodingException {
if (NetUtils.isAvailable()) {
switch (vollyBean.getMethod()) {
case Method.GET:
doGet(vollyBean.getUrl(), vollyBean.getHeaders(),
vollyBean.getParams(), successListener, errorListener);
break;
case Method.POST:
doPost(vollyBean.getUrl(), vollyBean.getHeaders(),
vollyBean.getParams(), successListener, errorListener);
break;
case Method.PUT:
doPut(vollyBean.getUrl(), vollyBean.getHeaders(),
vollyBean.getParams(), successListener, errorListener);
break;
case Method.DELETE:
doDelete();
break;
default:
break;
}
} else {
errorListener.onErrorResponse(null);
}
}
/**
* @param params
*
* @return urlEncode
* @throws UnsupportedEncodingException
*
*/
private String urlEncode(Map params)
throws UnsupportedEncodingException {
Iterator iter = params.keySet().iterator();
int i = 0;
StringBuffer sb = new StringBuffer();
while (iter.hasNext()) {
String key = iter.next();
String value = params.get(key);
if (i != 0) {
sb.append("&");
}
sb.append(key);
sb.append("=");
sb.append(URLEncoder.encode(value, "utf-8").toString());
i++;
}
return sb.toString();
}
}
/**
*
**/
public class VollyBeanFactory {
private static VollyBeanFactory instance = new VollyBeanFactory();
/**
*
*/
private VollyBeanFactory() {
}
/**
* @return
*/
public static VollyBeanFactory getInstance() {
if (instance == null) {
synchronized (VollyBeanFactory.class) {
instance = new VollyBeanFactory();
}
}
return instance;
}
/**
* @param username
*
* @param pwd
*
* @return bean
*/
public VollyBean getLoginBean(String username, String pwd) {
Map params = new HashMap();
params.put(Constant.HTTP_PARAM_USERNAME, username);
params.put(Constant.HTTP_PARAM_PWD, pwd);
VollyBean vollyBean = new VollyBean();
vollyBean.setMethod(Method.POST);//
SLog.console(" :" + ServerConfig.getInstance().getServerUrl());
vollyBean.setUrl(ServerConfig.getInstance().getServerUrl()); //
Map header = new HashMap();
header.put("Content-Type", "application/x-www-form-urldecoded");
vollyBean.setHeaders(header); //
vollyBean.setParams(params); //
return vollyBean;
}
}
다음은 실제 호출을 보도록 하겠습니다.
public void log(String username, String pwd,
Response.Listener<String> successListener,
Response.ErrorListener errorListener)
throws UnsupportedEncodingException {
VollyBean bean = VollyBeanFactory.getInstance().getLoginBean(username,
pwd);
man.request(bean, successListener, errorListener);
}
Volly는 기본적으로 이렇습니다. 주의하세요. Volly는jar백이 있으니 인터넷에서 아무거나 다운로드하면 됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.