package com.salama.android.developer.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.http.client.ClientProtocolException; import com.salama.android.dataservice.WebService; import com.salama.android.developer.util.http.SalamaHttpClientUtil; import com.salama.android.util.http.MultiPartFile; public class SalamaWebService extends WebService { //private int _requestTimeoutSeconds; //private ResourceFileManager _resourceFileManager; /** * 设置请求timeout秒数 * @param requestTimeoutSeconds 请求timeout秒数 */ @Override public void setRequestTimeoutSeconds(int requestTimeoutSeconds) { _requestTimeoutSeconds = requestTimeoutSeconds; SalamaHttpClientUtil.setRequestTimeout(_requestTimeoutSeconds * 1000); } /** * 执行基本方法 * @param url URL * @param isPost 是否POST * @param paramNames 参数名列表 * @param paramValues 参数值列表 * @return 返回结果 * @throws ClientProtocolException * @throws IOException */ @Override public String doBasic(String url, boolean isPost, List<String> paramNames, List<String> paramValues) throws ClientProtocolException, IOException { return (String)SalamaWebServiceUtil.doBasicMethod(url, false, isPost, paramNames, paramValues); } /** * 执行GET方法 * @param url URL * @param paramNames 参数名列表 * @param paramValues 参数值列表 * @return 返回结果 * @throws ClientProtocolException * @throws IOException */ @Override public String doGet(String url, List<String> paramNames, List<String> paramValues) throws ClientProtocolException, IOException { return (String)SalamaWebServiceUtil.doBasicMethod(url, false, false, paramNames, paramValues); } /** * 执行POST方法 * @param url URL * @param paramNames 参数名列表 * @param paramValues 参数值列表 * @return 返回结果 * @throws ClientProtocolException * @throws IOException */ @Override public String doPost(String url, List<String> paramNames, List<String> paramValues) throws ClientProtocolException, IOException { return (String)SalamaWebServiceUtil.doBasicMethod(url, false, true, paramNames, paramValues); } /** * 执行下载(POST方式) * @param url URL * @param paramNames 参数名列表 * @param paramValues 参数值列表 * @return 返回结果(文件内容) * @throws ClientProtocolException * @throws IOException */ @Override public byte[] doDownload(String url, List<String> paramNames, List<String> paramValues) throws ClientProtocolException, IOException { return (byte[])SalamaWebServiceUtil.doBasicMethod(url, true, true, paramNames, paramValues); } /** * 执行下载(POST方式) * @param url URL * @param paramNames 参数名列表 * @param paramValues 参数值列表 * @param saveTo 保存路径 * @return 是否成功 * @throws ClientProtocolException * @throws IOException */ @Override public boolean doDownloadToSave(String url, List<String> paramNames, List<String> paramValues, String saveTo) throws ClientProtocolException, IOException { return SalamaWebServiceUtil.doBasicMethodDownloadToSave(url, true, paramNames, paramValues, saveTo, 0); } /** * 执行上传 * @param url URL * @param paramNames 参数名列表 * @param paramValues 参数值列表 * @param multiPartNames 上传文件名列表 * @param multiPartFilePaths 上传文件路径列表 * @return 返回结果 * @throws ClientProtocolException * @throws IOException */ @Override public String doUpload(String url, List<String> paramNames, List<String> paramValues, List<String> multiPartNames, List<String> multiPartFilePaths) throws ClientProtocolException, IOException { List<MultiPartFile> multiPartFileList = getMultiPartFileListFromFilePaths( multiPartNames, multiPartFilePaths); return (String)SalamaWebServiceUtil.doMultipartMethod(url, false, paramNames, paramValues, multiPartFileList); } /** * 执行上传并下载文件 * @param url URL * @param paramNames 参数名列表 * @param paramValues 参数值列表 * @param multiPartNames 上传文件名列表 * @param multiPartFilePaths 上传文件路径列表 * @return 返回结果(文件内容) * @throws ClientProtocolException * @throws IOException */ @Override public byte[] doUploadAndDownload(String url, List<String> paramNames, List<String> paramValues, List<String> multiPartNames, List<String> multiPartFilePaths) throws ClientProtocolException, IOException { List<MultiPartFile> multiPartFileList = getMultiPartFileListFromFilePaths( multiPartNames, multiPartFilePaths); return (byte[])SalamaWebServiceUtil.doMultipartMethod(url, true, paramNames, paramValues, multiPartFileList); } /** * 执行上传并下载文件 * @param url URL * @param paramNames 参数名列表 * @param paramValues 参数值列表 * @param multiPartNames 上传文件名列表 * @param multiPartFilePaths 上传文件路径列表 * @param saveTo 下载文件保存路径 * @return 是否成功 * @throws ClientProtocolException * @throws IOException */ @Override public boolean doUploadAndDownloadToSave(String url, List<String> paramNames, List<String> paramValues, List<String> multiPartNames, List<String> multiPartFilePaths, String saveTo) throws ClientProtocolException, IOException { List<MultiPartFile> multiPartFileList = getMultiPartFileListFromFilePaths( multiPartNames, multiPartFilePaths); return SalamaWebServiceUtil.doMultipartMethodDownloadToSave( url, paramNames, paramValues, multiPartFileList, saveTo, 0); } /** * 下载资源文件 * @param url URL * @param paramNames 参数名列表 * @param paramValues 参数值列表 * @param saveToResId 保存用资源Id * @return 是否成功 * @throws ClientProtocolException * @throws IOException */ @Override public boolean doDownloadResource(String url, List<String> paramNames, List<String> paramValues, String saveToResId) throws ClientProtocolException, IOException { return SalamaWebServiceUtil.doBasicMethodDownloadToSave(url, true, paramNames, paramValues, _resourceFileManager.getResourceFilePath(saveToResId), 0); } /** * 上传资源文件 * @param url URL * @param paramNames 参数名列表 * @param paramValues 参数值列表 * @param multiPartNames 上传文件名列表 * @param multiPartResIds 上传文件资源Id * @return 返回结果 * @throws ClientProtocolException * @throws IOException */ @Override public String doUploadResource(String url, List<String> paramNames, List<String> paramValues, List<String> multiPartNames, List<String> multiPartResIds) throws ClientProtocolException, IOException { List<MultiPartFile> multiPartFileList = getMultiPartFileListFromResIds( multiPartNames, multiPartResIds); return (String)SalamaWebServiceUtil.doMultipartMethod(url, false, paramNames, paramValues, multiPartFileList); } /** * 上传资源文件并下载 * @param url URL * @param paramNames 参数名列表 * @param paramValues 参数值列表 * @param multiPartNames 上传文件名列表 * @param multiPartResIds 上传文件资源Id * @param saveToResId 下载文件保存用资源Id * @return 是否成功 * @throws ClientProtocolException * @throws IOException */ @Override public boolean doUploadAndDownloadResource(String url, List<String> paramNames, List<String> paramValues, List<String> multiPartNames, List<String> multiPartResIds, String saveToResId) throws ClientProtocolException, IOException { List<MultiPartFile> multiPartFileList = getMultiPartFileListFromResIds( multiPartNames, multiPartResIds); return SalamaWebServiceUtil.doMultipartMethodDownloadToSave(url, paramNames, paramValues, multiPartFileList, _resourceFileManager.getResourceFilePath(saveToResId), 0); } private static void saveToFilePath(byte[] data, String filePath) throws IOException { FileOutputStream resFileOS = null; try { resFileOS = new FileOutputStream(new File(filePath)); resFileOS.write(data); resFileOS.flush(); } finally { try { resFileOS.close(); } catch (Exception e) { } } } private static List<MultiPartFile> getMultiPartFileListFromFilePaths( List<String> multiPartNames, List<String> multiPartFilePaths) { List<MultiPartFile> multiPartFileList = new ArrayList<MultiPartFile>(); MultiPartFile multiPart = null; if(multiPartNames != null) { for (int i = 0; i < multiPartNames.size(); i++) { multiPart = new MultiPartFile(); multiPart.setName(multiPartNames.get(i)); multiPart.setFile(new File(multiPartFilePaths.get(i))); multiPartFileList.add(multiPart); } } return multiPartFileList; } private List<MultiPartFile> getMultiPartFileListFromResIds( List<String> multiPartNames, List<String> multiPartResIds) { List<MultiPartFile> multiPartFileList = new ArrayList<MultiPartFile>(); MultiPartFile multiPart = null; if(multiPartNames != null) { for (int i = 0; i < multiPartNames.size(); i++) { multiPart = new MultiPartFile(); multiPart.setName(multiPartNames.get(i)); multiPart.setFile(new File(_resourceFileManager .getResourceFilePath(multiPartResIds.get(i)))); multiPartFileList.add(multiPart); } } return multiPartFileList; } }