5月20号王者荣耀限定皮肤好会出什么皮肤

在10个鸡蛋上坐了3星期后,终于成功孵化出第一颗鸡蛋。
但礼仪小姐、导购小姐依然是场内的一道风景线。
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
  要想快速开发一个Android应用,通常会用到很多工具,巧妙利用这些工具,能让我们的开发工作事半功倍,节省大量时间,下面大连小编就为大家介绍下这19个开发工具都有神马用途。
  1、XAppDbg
  XAppDbg是一个可以在运行中改变代码中参数的一个应用开发工具。这个工具可以为你省下大量的时间,因为你不用为应用的每次小改变而重新编译运行你的程序。
  2、ChkBugReport
  这个工具可以快速地检查输出的Android错误报告。它从Android错误报告工具输出的大量文本文件中进行语义分析,然后解析成一个更具有可读性的文档,分析起来更加容易。ChkBugReport也是一个开源的项目。
  3、APKAnalyser
  这是一个静态、虚拟分析工具,你可以全面地概览应用的架构。可以用它来检查API参考文档,查看应用依赖还有反编译字节码。APKAnalyser是一个完整的开源工具链,它支持修改应用的二进制代码,你可以重新打包、安装、运行以及验证logcat的结果。
  4、AppXplore
  有了AppXplore工具,你可以浏览所有安装在你安卓设备上的应用,还可以剖析很多应用的细节――应用的版本、包名、证书、权限、签名、activities和很多设备上其它一般不可查看的信息。AppXplore在查看应用运行时占用内存大小,文件是否可移动到SD卡上时特别有用。同样,开发者可以用来测试并确保应用的质量。这样可以确保应用在manifest文件上显示合适的权限。
  5、Memory Analyzer(MAT)
  Eclipse上的Memory Analyzer是一个快速且功能丰富的Java堆分析工具,它可以帮助你找出内存泄露并减少内存的开销。使用Memory Analyzer可以分析数以百万的对象、多个堆转储(heap dump),快速地统计保留下来的对象的多少,这样可以查看哪些对象阻止了垃圾收集器回收。最后运行一个报告自动报告导致泄露的可疑地方。
  6、Eclipse插件SQLiteManger
  这个插件可以帮助开发者在Eclipse上查看和修改sqlite数据库。
  7、Robotium
  Robotium是一个测试框架,它可以简单地为安卓应用写出一个强大且健壮的自动黑箱测试容器。有了Robotium,测试开发者可以支持多种安卓activity编写function、system和acceptance测试脚本。Robotium全支持Activity、Dialogs、Toasts、Menus以及Context Menus。
  8、ACRA
  ACRA是一个可以让安卓应用自动发出GoogleDoc格式崩溃报告的函数库。安卓开发者可以通过ACRA获取应用崩溃或者错误行为的数据。如果有一个崩溃发生,你的应用不会越过已有的系统崩溃提醒或者报告功能来添加用户提醒。如果使用Toast、状态提醒条或者直接对话框模式,这个“强制关闭”的对话框不会再显示,就算设备上原生系统的提醒功能开启也不能发送一个另外的报告。
  9、Android Layout Binder
  Android Layout Binder会将你安卓的XML布局文件转换成一系列的声明,绑定保存所有的人工输入。键入一个前缀,选择XML文件上要粘贴的范围,然后点击生成。选择“verbose”来找出所有被跳过的区域的原因。
  10、Spoon
  安卓设备空前膨胀的生态系统给测试应用带来了独特挑战。Spoon通过分配执行instrumentation测试和用更有意义的方法显示结果来简化这项任务。Spoon没有试着成为一个新的测试形式,它让目前的instrumentation测试更加有用。使用应用的APK和instrumentation APK,Spoon可以同时在多种设备上运行测试。一旦所有的测试完成,就会生成包括各种设备测试的详细信息的静态HTML摘要。
  11、Android Content Provider代码生成器
  你是否经常复制和粘贴一大堆代码来写一个ContentProvider?那么这个代码生成工具可以帮助你。
  12、AndroidKickStartR
  十秒内开始你的下一个安卓应用。AndroidKickstartR使用最流行的函数库帮助你快速地建立一个配置好的安卓应用。它为你建立和配置好项目给你,直接专注于代码吧!
  13、Android Holo颜色生成器
  这个Android Holo颜色生成器可以让你简单地为你的应用创建Android组件,如editext或者spinner,并且可以使用自己的颜色。它会生成所有9种必须的patch assets以及相关XML的drawables和styles文件,可以直接复制这些文件到你的项目中。
  14、ActionBar风格生成器
  这个ActionBar风格生成器可以让你轻松地创建一个简洁、有吸引力且无漏洞的自定义actionbar。它会生成所有9种必须的patch assets以及相关XML的drawables和styles文件,这些文件可以直接复制到你的项目中。
  15、Asset Studio
  Asset Studio可以让你快速简单地从已经存在的图片、剪贴画或者文本资源中生成图标。
  16、little eye labs
  little eye labs是安卓应用上的性能分析工具,它的产品已经改名字为“little eye”而不是之前叫的“littleEye appInsight”。保持我们产品目录的简洁,与我们在每一部分工作上专注于简洁的总体主题上保持一致。
  主要特性:
为任何一个应用描出轮廓;
录制和回放视频;
前端和后台用法;
CPU,内存和数据的消耗;
手动或自动的堆转储;
保存和分享。
  17、Droid Inspector
  Overdraw(透支)概念在安卓的世界里被认为是很重要的。在Google I/O大会上,很少有演讲强调了减少透支的重要性。这是(在我认识中最好的)第一个可以帮助我们容易地辨认出透支的工具。
  主要特性
与DDMS结合;
后台/内容;
2D转3D转2D;
  &还有更多……
  18、Android Button Maker
  Android Button Maker是一个可以在线生成按钮代码的工具。Android API提供了XML文件定义的几何形状的Drawable资源,包括颜色、边界和梯度。这些按钮的生成是基于drawable形态的XML代码,这样可以比普通的png按钮加载得更快。你可以在设置面板上自定义按钮的属性,然后获取其源码。
  19、jsonschema2pojo
  用于生成Json架构上的POJO(Plain Old Java Object)类。这个小而强大的工具可以为你节省写POJO所用的时间。
  蓝鸥大连Android开发培训小编希望大家看完上述19个Android 开发工具,能够对你的Android开发工作有所帮助,也希望你的开发道路更是顺风顺水。
  想了解更多移动互联网开发技术,可关注蓝鸥官方网站资讯栏目/lozx/,每天都有技术干货分享等你来学,你也可关注蓝鸥微信公众号:lanou3g学习更多移动互联网前沿知识。
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
搜狐公众平台官方账号
生活时尚&搭配博主 /生活时尚自媒体 /时尚类书籍作者
搜狐网教育频道官方账号
全球最大华文占星网站-专业研究星座命理及测算服务机构
蓝鸥大连中心是蓝鸥科技在大连成立的分部,专注ios开发、A...
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:104649人阅读
【Android 快速开发】(11)
【Android 基础】(15)
转载请标明出处:,本文出自打开大家手上的项目,基本都会有一大批的辅助类,今天特此整理出10个基本每个项目中都会使用的工具类,用于快速开发~~在此感谢群里给我发项目中工具类的兄弟/姐妹~1、日志工具类L.javapackage com.zhy.
import android.util.L
* Log统一管理类
public class L
private L()
/* cannot be instantiated */
throw new UnsupportedOperationException(&cannot be instantiated&);
public static boolean isDebug =// 是否需要打印bug,可以在application的onCreate函数里面初始化
private static final String TAG = &way&;
// 下面四个是默认tag的函数
public static void i(String msg)
if (isDebug)
Log.i(TAG, msg);
public static void d(String msg)
if (isDebug)
Log.d(TAG, msg);
public static void e(String msg)
if (isDebug)
Log.e(TAG, msg);
public static void v(String msg)
if (isDebug)
Log.v(TAG, msg);
// 下面是传入自定义tag的函数
public static void i(String tag, String msg)
if (isDebug)
Log.i(tag, msg);
public static void d(String tag, String msg)
if (isDebug)
Log.i(tag, msg);
public static void e(String tag, String msg)
if (isDebug)
Log.i(tag, msg);
public static void v(String tag, String msg)
if (isDebug)
Log.i(tag, msg);
}网上看到的类,注释上应该原创作者的名字,很简单的一个类;网上也有很多提供把日志记录到SDCard上的,不过我是从来没记录过,所以引入个最简单的,大家可以进行评价是否需要扩充~~2、Toast统一管理类&package com.zhy.
import android.content.C
import android.widget.T
* Toast统一管理类
public class T
private T()
/* cannot be instantiated */
throw new UnsupportedOperationException(&cannot be instantiated&);
public static boolean isShow =
* 短时间显示Toast
* @param context
* @param message
public static void showShort(Context context, CharSequence message)
if (isShow)
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
* 短时间显示Toast
* @param context
* @param message
public static void showShort(Context context, int message)
if (isShow)
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
* 长时间显示Toast
* @param context
* @param message
public static void showLong(Context context, CharSequence message)
if (isShow)
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
* 长时间显示Toast
* @param context
* @param message
public static void showLong(Context context, int message)
if (isShow)
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
* 自定义显示Toast时间
* @param context
* @param message
* @param duration
public static void show(Context context, CharSequence message, int duration)
if (isShow)
Toast.makeText(context, message, duration).show();
* 自定义显示Toast时间
* @param context
* @param message
* @param duration
public static void show(Context context, int message, int duration)
if (isShow)
Toast.makeText(context, message, duration).show();
}也是非常简单的一个封装,能省则省了~~3、SharedPreferences封装类SPUtilspackage com.zhy.
import java.lang.reflect.InvocationTargetE
import java.lang.reflect.M
import java.util.M
import android.content.C
import android.content.SharedP
public class SPUtils
* 保存在手机里面的文件名
public static final String FILE_NAME = &share_data&;
* 保存数据的方法,我们需要拿到保存数据的具体类型,然后根据类型调用不同的保存方法
* @param context
* @param key
* @param object
public static void put(Context context, String key, Object object)
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
if (object instanceof String)
editor.putString(key, (String) object);
} else if (object instanceof Integer)
editor.putInt(key, (Integer) object);
} else if (object instanceof Boolean)
editor.putBoolean(key, (Boolean) object);
} else if (object instanceof Float)
editor.putFloat(key, (Float) object);
} else if (object instanceof Long)
editor.putLong(key, (Long) object);
editor.putString(key, object.toString());
SharedPreferencesCompat.apply(editor);
* 得到保存数据的方法,我们根据默认值得到保存的数据的具体类型,然后调用相对于的方法获取值
* @param context
* @param key
* @param defaultObject
public static Object get(Context context, String key, Object defaultObject)
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
if (defaultObject instanceof String)
return sp.getString(key, (String) defaultObject);
} else if (defaultObject instanceof Integer)
return sp.getInt(key, (Integer) defaultObject);
} else if (defaultObject instanceof Boolean)
return sp.getBoolean(key, (Boolean) defaultObject);
} else if (defaultObject instanceof Float)
return sp.getFloat(key, (Float) defaultObject);
} else if (defaultObject instanceof Long)
return sp.getLong(key, (Long) defaultObject);
* 移除某个key值已经对应的值
* @param context
* @param key
public static void remove(Context context, String key)
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.remove(key);
SharedPreferencesCompat.apply(editor);
* 清除所有数据
* @param context
public static void clear(Context context)
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.clear();
SharedPreferencesCompat.apply(editor);
* 查询某个key是否已经存在
* @param context
* @param key
public static boolean contains(Context context, String key)
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
return sp.contains(key);
* 返回所有的键值对
* @param context
public static Map&String, ?& getAll(Context context)
SharedPreferences sp = context.getSharedPreferences(FILE_NAME,
Context.MODE_PRIVATE);
return sp.getAll();
* 创建一个解决SharedPreferencesCompat.apply方法的一个兼容类
* @author zhy
private static class SharedPreferencesCompat
private static final Method sApplyMethod = findApplyMethod();
* 反射查找apply的方法
@SuppressWarnings({ &unchecked&, &rawtypes& })
private static Method findApplyMethod()
Class clz = SharedPreferences.Editor.
return clz.getMethod(&apply&);
} catch (NoSuchMethodException e)
* 如果找到则使用apply执行,否则使用commit
* @param editor
public static void apply(SharedPreferences.Editor editor)
if (sApplyMethod != null)
sApplyMethod.invoke(editor);
} catch (IllegalArgumentException e)
} catch (IllegalAccessException e)
} catch (InvocationTargetException e)
对SharedPreference的使用做了建议的封装,对外公布出put,get,remove,clear等等方法;注意一点,里面所有的commit操作使用了SharedPreferencesCompat.apply进行了替代,目的是尽可能的使用apply代替commit首先说下为什么,因为commit方法是同步的,并且我们很多时候的commit操作都是UI线程中,毕竟是IO操作,尽可能异步;所以我们使用apply进行替代,apply异步的进行写入;但是apply相当于commit来说是new API呢,为了更好的兼容,我们做了适配;SharedPreferencesCompat也可以给大家创建兼容类提供了一定的参考~~4、单位转换类&DensityUtilspackage com.zhy.
import android.content.C
import android.util.TypedV
* 常用单位转换的辅助类
public class DensityUtils
private DensityUtils()
/* cannot be instantiated */
throw new UnsupportedOperationException(&cannot be instantiated&);
* @param context
* @param val
public static int dp2px(Context context, float dpVal)
return (int) TypedValue.PLEX_UNIT_DIP,
dpVal, context.getResources().getDisplayMetrics());
* @param context
* @param val
public static int sp2px(Context context, float spVal)
return (int) TypedValue.PLEX_UNIT_SP,
spVal, context.getResources().getDisplayMetrics());
* @param context
* @param pxVal
public static float px2dp(Context context, float pxVal)
final float scale = context.getResources().getDisplayMetrics().
return (pxVal / scale);
* @param fontScale
* @param pxVal
public static float px2sp(Context context, float pxVal)
return (pxVal / context.getResources().getDisplayMetrics().scaledDensity);
5、SD卡相关辅助类&SDCardUtilspackage com.zhy.
import java.io.F
import android.os.E
import android.os.StatFs;
* SD卡相关的辅助类
public class SDCardUtils
private SDCardUtils()
/* cannot be instantiated */
throw new UnsupportedOperationException(&cannot be instantiated&);
* 判断SDCard是否可用
public static boolean isSDCardEnable()
return Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);
* 获取SD卡路径
public static String getSDCardPath()
return Environment.getExternalStorageDirectory().getAbsolutePath()
* 获取SD卡的剩余容量 单位byte
public static long getSDCardAllSize()
if (isSDCardEnable())
StatFs stat = new StatFs(getSDCardPath());
// 获取空闲的数据块的数量
long availableBlocks = (long) stat.getAvailableBlocks() - 4;
// 获取单个数据块的大小(byte)
long freeBlocks = stat.getAvailableBlocks();
return freeBlocks * availableB
* 获取指定路径所在空间的剩余可用容量字节数,单位byte
* @param filePath
* @return 容量字节 SDCard可用空间,内部存储可用空间
public static long getFreeBytes(String filePath)
// 如果是sd卡的下的路径,则获取sd卡可用容量
if (filePath.startsWith(getSDCardPath()))
filePath = getSDCardPath();
{// 如果是内部存储的路径,则获取内存存储的可用容量
filePath = Environment.getDataDirectory().getAbsolutePath();
StatFs stat = new StatFs(filePath);
long availableBlocks = (long) stat.getAvailableBlocks() - 4;
return stat.getBlockSize() * availableB
* 获取系统存储路径
public static String getRootDirectoryPath()
return Environment.getRootDirectory().getAbsolutePath();
6、屏幕相关辅助类&ScreenUtilspackage com.zhy.
import android.app.A
import android.content.C
import android.graphics.B
import android.graphics.R
import android.util.DisplayM
import android.view.V
import android.view.WindowM
* 获得屏幕相关的辅助类
public class ScreenUtils
private ScreenUtils()
/* cannot be instantiated */
throw new UnsupportedOperationException(&cannot be instantiated&);
* 获得屏幕高度
* @param context
public static int getScreenWidth(Context context)
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.widthP
* 获得屏幕宽度
* @param context
public static int getScreenHeight(Context context)
WindowManager wm = (WindowManager) context
.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(outMetrics);
return outMetrics.heightP
* 获得状态栏的高度
* @param context
public static int getStatusHeight(Context context)
int statusHeight = -1;
Class&?& clazz = Class.forName(&com.android.internal.R$dimen&);
Object object = clazz.newInstance();
int height = Integer.parseInt(clazz.getField(&status_bar_height&)
.get(object).toString());
statusHeight = context.getResources().getDimensionPixelSize(height);
} catch (Exception e)
e.printStackTrace();
return statusH
* 获取当前屏幕截图,包含状态栏
* @param activity
public static Bitmap snapShotWithStatusBar(Activity activity)
View view = activity.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bmp = view.getDrawingCache();
int width = getScreenWidth(activity);
int height = getScreenHeight(activity);
Bitmap bp =
bp = Bitmap.createBitmap(bmp, 0, 0, width, height);
view.destroyDrawingCache();
* 获取当前屏幕截图,不包含状态栏
* @param activity
public static Bitmap snapShotWithoutStatusBar(Activity activity)
View view = activity.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap bmp = view.getDrawingCache();
Rect frame = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.
int width = getScreenWidth(activity);
int height = getScreenHeight(activity);
Bitmap bp =
bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height
- statusBarHeight);
view.destroyDrawingCache();
7、App相关辅助类package com.zhy.
import android.content.C
import android.content.pm.PackageI
import android.content.pm.PackageM
import android.content.pm.PackageManager.NameNotFoundE
* 跟App相关的辅助类
public class AppUtils
private AppUtils()
/* cannot be instantiated */
throw new UnsupportedOperationException(&cannot be instantiated&);
* 获取应用程序名称
public static String getAppName(Context context)
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
context.getPackageName(), 0);
int labelRes = packageInfo.applicationInfo.labelR
return context.getResources().getString(labelRes);
} catch (NameNotFoundException e)
e.printStackTrace();
* [获取应用程序版本名称信息]
* @param context
* @return 当前应用的版本名称
public static String getVersionName(Context context)
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(
context.getPackageName(), 0);
return packageInfo.versionN
} catch (NameNotFoundException e)
e.printStackTrace();
8、软键盘相关辅助类KeyBoardUtilspackage com.zhy.
import android.content.C
import android.view.inputmethod.InputMethodM
import android.widget.EditT
* 打开或关闭软键盘
* @author zhy
public class KeyBoardUtils
* 打卡软键盘
* @param mEditText
* @param mContext
public static void openKeybord(EditText mEditText, Context mContext)
InputMethodManager imm = (InputMethodManager) mContext
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
InputMethodManager.HIDE_IMPLICIT_ONLY);
* 关闭软键盘
* @param mEditText
* @param mContext
public static void closeKeybord(EditText mEditText, Context mContext)
InputMethodManager imm = (InputMethodManager) mContext
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
9、网络相关辅助类&NetUtilspackage com.zhy.
import android.app.A
import ponentN
import android.content.C
import android.content.I
import android.net.ConnectivityM
import android.net.NetworkI
* 跟网络相关的工具类
public class NetUtils
private NetUtils()
/* cannot be instantiated */
throw new UnsupportedOperationException(&cannot be instantiated&);
* 判断网络是否连接
* @param context
public static boolean isConnected(Context context)
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (null != connectivity)
NetworkInfo info = connectivity.getActiveNetworkInfo();
if (null != info && info.isConnected())
if (info.getState() == NetworkInfo.State.CONNECTED)
* 判断是否是wifi连接
public static boolean isWifi(Context context)
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null)
return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
* 打开网络设置界面
public static void openSetting(Activity activity)
Intent intent = new Intent(&/&);
ComponentName cm = new ComponentName(&com.android.settings&,
&com.android.settings.WirelessSettings&);
intent.setComponent(cm);
intent.setAction(&android.intent.action.VIEW&);
activity.startActivityForResult(intent, 0);
10、Http相关辅助类&HttpUtilspackage com.zhy.
import java.io.BufferedR
import java.io.ByteArrayOutputS
import java.io.IOE
import java.io.InputS
import java.io.InputStreamR
import java.io.PrintW
import java.net.HttpURLC
import java.net.URL;
* Http请求的工具类
* @author zhy
public class HttpUtils
private static final int TIMEOUT_IN_MILLIONS = 5000;
public interface CallBack
void onRequestComplete(String result);
* 异步的Get请求
* @param urlStr
* @param callBack
public static void doGetAsyn(final String urlStr, final CallBack callBack)
new Thread()
public void run()
String result = doGet(urlStr);
if (callBack != null)
callBack.onRequestComplete(result);
} catch (Exception e)
e.printStackTrace();
}.start();
* 异步的Post请求
* @param urlStr
* @param params
* @param callBack
* @throws Exception
public static void doPostAsyn(final String urlStr, final String params,
final CallBack callBack) throws Exception
new Thread()
public void run()
String result = doPost(urlStr, params);
if (callBack != null)
callBack.onRequestComplete(result);
} catch (Exception e)
e.printStackTrace();
}.start();
* Get请求,获得返回数据
* @param urlStr
* @throws Exception
public static String doGet(String urlStr)
HttpURLConnection conn =
InputStream is =
ByteArrayOutputStream baos =
url = new URL(urlStr);
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
conn.setRequestMethod(&GET&);
conn.setRequestProperty(&accept&, &*/*&);
conn.setRequestProperty(&connection&, &Keep-Alive&);
if (conn.getResponseCode() == 200)
is = conn.getInputStream();
baos = new ByteArrayOutputStream();
int len = -1;
byte[] buf = new byte[128];
while ((len = is.read(buf)) != -1)
baos.write(buf, 0, len);
baos.flush();
return baos.toString();
throw new RuntimeException(& responseCode is not 200 ... &);
} catch (Exception e)
e.printStackTrace();
if (is != null)
is.close();
} catch (IOException e)
if (baos != null)
baos.close();
} catch (IOException e)
conn.disconnect();
* 向指定 URL 发送POST方法的请求
* @param url
发送请求的 URL
* @param param
请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
* @return 所代表远程资源的响应结果
* @throws Exception
public static String doPost(String url, String param)
PrintWriter out =
BufferedReader in =
String result = &&;
URL realUrl = new URL(url);
// 打开和URL之间的连接
HttpURLConnection conn = (HttpURLConnection) realUrl
.openConnection();
// 设置通用的请求属性
conn.setRequestProperty(&accept&, &*/*&);
conn.setRequestProperty(&connection&, &Keep-Alive&);
conn.setRequestMethod(&POST&);
conn.setRequestProperty(&Content-Type&,
&application/x-www-form-urlencoded&);
conn.setRequestProperty(&charset&, &utf-8&);
conn.setUseCaches(false);
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setReadTimeout(TIMEOUT_IN_MILLIONS);
conn.setConnectTimeout(TIMEOUT_IN_MILLIONS);
if (param != null && !param.trim().equals(&&))
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
while ((line = in.readLine()) != null)
} catch (Exception e)
e.printStackTrace();
// 使用finally块来关闭输出流、输入流
if (out != null)
out.close();
if (in != null)
in.close();
} catch (IOException ex)
ex.printStackTrace();
如果大家在使用过程中出现什么错误,或者有更好的建议,欢迎大家留言提出~~可以不断的改进这些类~
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
积分:47058
积分:47058
排名:第58名
原创:197篇
评论:13801条
长期为您推荐优秀博文、开源项目、视频等,进入还有好玩的等着你,欢迎扫一扫。
请勿重复加群,Thx
文章:11篇
阅读:184868
文章:10篇
阅读:108274
文章:67篇
阅读:5432404
微信关注我的公众号

我要回帖

更多关于 王者荣耀限定皮肤好 的文章

 

随机推荐