package com.salama.android.developer.util; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http.client.ClientProtocolException; import com.salama.android.developer.SalamaAppService; import com.salama.android.developer.user.SalamaUserService; import com.salama.android.developer.util.http.SalamaHttpClientUtil; import com.salama.android.util.http.MultiPartFile; public class SalamaWebServiceUtil { private final static String PARAM_NAME_BUNDLE_ID = "bundleId"; private final static String PARAM_NAME_APP_TOKEN = "appToken"; private final static String PARAM_NAME_AUTH_TICKET = "authTicket"; public static Object doBasicMethod(String url, boolean isDownload, boolean isPostMethod, List<String> paramNames, List<String> paramValues) throws ClientProtocolException, IOException { return doBasicMethod(url, isDownload, isPostMethod, paramNames, paramValues, 0); } /** * * @param url * @param isDownload * @param isPostMethod * @param paramNames * @param paramValues * @param requestTimeoutInterval 请求超时时间(单位:秒) * @return web service返回值。类型为String 或者 byte[]。 * @throws ClientProtocolException * @throws IOException */ public static Object doBasicMethod(String url, boolean isDownload, boolean isPostMethod, List<String> paramNames, List<String> paramValues, int requestTimeoutInterval) throws ClientProtocolException, IOException { List<String> paramNamesTmp = paramNames; List<String> paramValuesTmp = paramValues; if(paramNamesTmp == null) { paramNamesTmp = new ArrayList<String>(); } if(paramValuesTmp == null) { paramValuesTmp = new ArrayList<String>(); } editParamNameValues(paramNamesTmp, paramValuesTmp); if(requestTimeoutInterval > 0) { SalamaHttpClientUtil.setRequestTimeout(requestTimeoutInterval * 1000); } if(!isPostMethod) { return SalamaHttpClientUtil.doBasicGet(isDownload, url, paramNamesTmp, paramValuesTmp, null); } else { return SalamaHttpClientUtil.doBasicPost(isDownload, url, paramNamesTmp, paramValuesTmp, null); } } public static boolean doBasicMethodDownloadToSave(String url, boolean isPostMethod, List<String> paramNames, List<String> paramValues, String saveTo, int requestTimeoutInterval) throws ClientProtocolException, IOException { List<String> paramNamesTmp = paramNames; List<String> paramValuesTmp = paramValues; if(paramNamesTmp == null) { paramNamesTmp = new ArrayList<String>(); } if(paramValuesTmp == null) { paramValuesTmp = new ArrayList<String>(); } editParamNameValues(paramNamesTmp, paramValuesTmp); if(requestTimeoutInterval > 0) { SalamaHttpClientUtil.setRequestTimeout(requestTimeoutInterval * 1000); } if(!isPostMethod) { return SalamaHttpClientUtil.doBasicGetDownloadToSave(url, paramNamesTmp, paramValuesTmp, saveTo); } else { return SalamaHttpClientUtil.doBasicPostDownloadToSave(url, paramNamesTmp, paramValuesTmp, null, saveTo); } } public static Object doMultipartMethod(String url, boolean isDownload, List<String> paramNames, List<String> paramValues, List<MultiPartFile> filePartValues) throws ClientProtocolException, IOException { return doMultipartMethod(url, isDownload, paramNames, paramValues, filePartValues, 0); } public static Object doMultipartMethod(String url, boolean isDownload, List<String> paramNames, List<String> paramValues, List<MultiPartFile> filePartValues, int requestTimeoutInterval) throws ClientProtocolException, IOException { List<String> paramNamesTmp = paramNames; List<String> paramValuesTmp = paramValues; if(paramNamesTmp == null) { paramNamesTmp = new ArrayList<String>(); } if(paramValuesTmp == null) { paramValuesTmp = new ArrayList<String>(); } editParamNameValues(paramNamesTmp, paramValuesTmp); if(requestTimeoutInterval > 0) { SalamaHttpClientUtil.setRequestTimeout(requestTimeoutInterval * 1000); } return SalamaHttpClientUtil.doMultipartPost(isDownload, url, paramNamesTmp, paramValuesTmp, filePartValues); } public static boolean doMultipartMethodDownloadToSave(String url, List<String> paramNames, List<String> paramValues, List<MultiPartFile> filePartValues, String saveTo, int requestTimeoutInterval) throws ClientProtocolException, IOException { List<String> paramNamesTmp = paramNames; List<String> paramValuesTmp = paramValues; if(paramNamesTmp == null) { paramNamesTmp = new ArrayList<String>(); } if(paramValuesTmp == null) { paramValuesTmp = new ArrayList<String>(); } editParamNameValues(paramNamesTmp, paramValuesTmp); if(requestTimeoutInterval > 0) { SalamaHttpClientUtil.setRequestTimeout(requestTimeoutInterval * 1000); } return SalamaHttpClientUtil.doMultipartPostDownloadToSave(url, paramNamesTmp, paramValuesTmp, filePartValues, saveTo); } private static void editParamNameValues(List<String> paramNames, List<String> paramValues) { boolean isAppTokenAdded = false; boolean isAuthTicketAdded = false; String authTicket = ""; if(SalamaUserService.singleton().getUserAuthInfo() != null && SalamaUserService.singleton().getUserAuthInfo().getAuthTicket() != null) { authTicket = SalamaUserService.singleton().getUserAuthInfo().getAuthTicket(); } String paramName = null; for(int i = 0; i < paramNames.size(); i++) { paramName = paramNames.get(i); if(PARAM_NAME_APP_TOKEN.equals(paramName)) { paramValues.set(i, SalamaAppService.singleton().getAppToken()); isAppTokenAdded = true; } else if(PARAM_NAME_AUTH_TICKET.equals(paramName)) { paramValues.set(i, authTicket); isAuthTicketAdded = true; } } if(!isAppTokenAdded) { paramNames.add(PARAM_NAME_APP_TOKEN); paramValues.add(SalamaAppService.singleton().getAppToken()); } if(!isAuthTicketAdded) { paramNames.add(PARAM_NAME_AUTH_TICKET); paramValues.add(authTicket); } paramNames.add(PARAM_NAME_BUNDLE_ID); paramValues.add(SalamaAppService.singleton().getBundleId()); } }