首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

fanfou(饭否) android客户端 代码学习四

2012-06-27 
fanfou(饭否) android客户端 代码学习4参考文档:http://jiangzhengjun.iteye.com/blog/506041 Java中十六

fanfou(饭否) android客户端 代码学习4

参考文档:

http://jiangzhengjun.iteye.com/blog/506041 Java中十六进制转换 Integer.toHexString()
http://blog.csdn.net/ma1kong/article/details/2662997 MessageDigest的功能及用法 .
http://www.linuxidc.com/Linux/2011-09/42288.htm Android中使用SoftReference缓存图片对象
http://apps.hi.baidu.com/share/detail/46467495 HttpClient 4处理文件上传的例子(MultipartEntity)?
http://support.microsoft.com/kb/257591 安全套接字层 (SSL) 握手说明

必备知识:

&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当str为null时,后面的表达式不会执行,所以不会出现NullPointerException如果将&&改为&,则会抛出NullPointerException异常。If(x==33 & ++y>0) y会增长,If(x==33 && ++y>0)不会增长
&还可以用作位运算符,当&操作符两边的表达式不是boolean类型时,&表示按位与操作,我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。

代码部分:

取得图片流程:url加密..进入图片缓存寻找..未果..通过httpRequest..附带MultipartEntity,时间太晚,不做分类加注释了,自己看吧

/** * 获得指定file/URL对应的Bitmap,首先找本地文件,如果有直接使用,否则去网上获取 *  * @param file *            file URL/file PATH * @param bitmap * @param quality * @throws HttpException */public Bitmap safeGet(String file) throws HttpException {String hashedUrl = getMd5(url);FileInputStream fis = null;fis = mContext.openFileInput(hashedUrl);bitmap=BitmapFactory.decodeStream(fis);if (bitmap != null) {synchronized (this) { // memory cache//private Map<String, SoftReference<Bitmap>> mCache;mCache.put(file, new SoftReference<Bitmap>(bitmap));}return bitmap;} else { // get from webString url = file;bitmap = downloadImage2(url);// 注释掉以测试新的写入文件方法// put(file, bitmap); // file Cachereturn bitmap;}}// MD5 hases are used to generate filenames based off a URL.private String getMd5(String url) {mDigest.update(url.getBytes());return getHashString(mDigest);}private String getHashString(MessageDigest digest) {StringBuilder builder = new StringBuilder();for (byte b : digest.digest()) {builder.append(Integer.toHexString((b >> 4) & 0xf));builder.append(Integer.toHexString(b & 0xf));}return builder.toString();}public Response httpRequest(String url,ArrayList<BasicNameValuePair> postParams, File file,boolean authenticated, String httpMethod) throws HttpException {Log.d(TAG, "Sending " + httpMethod + " request to " + url);if (TwitterApplication.DEBUG) {DebugTimer.betweenStart("HTTP");}URI uri = createURI(url);HttpResponse response = null;Response res = null;HttpUriRequest method = null;// Create POST, GET or DELETE METHODmethod = createMethod(httpMethod, uri, file, postParams);// Setup ConnectionParams, Request HeadersSetupHTTPConnectionParams(method);// Execute Requesttry {// 加入OAuth认证信息if (authenticated) {mOAuthClient.signRequest(method);}response = mClient.execute(method, localcontext);res = new Response(response);} catch (ClientProtocolException e) {Log.e(TAG, e.getMessage(), e);throw new HttpException(e.getMessage(), e);} catch (IOException ioe) {throw new HttpException(ioe.getMessage(), ioe);} catch (OAuthClientException e) {Log.e(TAG, e.getMessage(), e);throw new HttpException(e.getMessage(), e);}if (response != null) {int statusCode = response.getStatusLine().getStatusCode();// It will throw a weiboException while status code is not 200HandleResponseStatusCode(statusCode, res);} else {Log.e(TAG, "response is null");}if (TwitterApplication.DEBUG) {DebugTimer.betweenEnd("HTTP");}return res;}/** * 创建可带一个File的MultipartEntity *  * @param filename *            文件名 * @param file *            文件 * @param postParams *            其他POST参数 * @return 带文件和其他参数的Entity * @throws UnsupportedEncodingException */private MultipartEntity createMultipartEntity(String filename, File file,ArrayList<BasicNameValuePair> postParams)throws UnsupportedEncodingException {MultipartEntity entity = new MultipartEntity();// Don't try this. Server does not appear to support chunking.// entity.addPart("media", new InputStreamBody(imageStream, "media"));entity.addPart(filename, new FileBody(file));for (BasicNameValuePair param : postParams) {entity.addPart(param.getName(), new StringBody(param.getValue()));}return entity;}

?

?

?

?

热点排行