Android 分别使用Post与Get实现网络图片加载
16lz
2021-01-23
1.post方法
public class NetActivity extends BaseActivity { private static final int SUCCESS = 0; protected static final int ERROR = 1; private EditText mEditText; private TextView mTextView; private Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case SUCCESS: mTextView.setText((String) msg.obj); show("加载成功"); break; case ERROR: show("加载失败"); break; default: break; } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_net); mEditText = (EditText) findViewById(R.id.editText1); mTextView = (TextView) findViewById(R.id.textView1); } public void go(View view) { new Thread(new Runnable() { @Override public void run() { try { String url = mEditText.getText().toString().toString(); HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); conn.setReadTimeout(5000); conn.setRequestMethod("POST"); conn.setConnectTimeout(5000); conn.setDoOutput(true); conn.setDoInput(true); ByteArrayOutputStream bos = null; conn.setRequestProperty("User-Agent", "image/gif,image/jpeg"); conn.setRequestProperty("Accept-Language", "zh-cn"); conn.setRequestProperty("Accept", "image/gif,image/jpeg"); if (conn.getResponseCode() == 200) { InputStream inputStream = conn.getInputStream(); bos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = -1; while ((len = inputStream.read(buffer)) != -1) { bos.write(buffer, 0, len); bos.flush(); } inputStream.close(); bos.close(); } String result = new String(bos.toByteArray()); if (result.contains("utf-8")) { result = new String(bos.toByteArray(), "utf-8"); } else if (result.contains("gb2312")) { result = new String(bos.toByteArray(), "gb2312"); } Message msg = Message.obtain(); msg.obj = result; msg.what = SUCCESS; mHandler.sendMessage(msg); } catch (Exception e) { e.printStackTrace(); mHandler.sendEmptyMessage(ERROR); } } }); }}
2.Get方式
public class GetNetImageActivity extends BaseActivity { private EditText mUrl; private ImageView mImageView; private Handler mHandler = new Handler(){ public void handleMessage(android.os.Message msg) { Bitmap bitmap = (Bitmap) msg.obj; mImageView.setImageBitmap(bitmap); }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_get_netimage); mUrl = (EditText) findViewById(R.id.editText1); mImageView = (ImageView) findViewById(R.id.imageView1); } public void getNetImage(View view){ new Thread(new Runnable() { @Override public void run() { try { URL url = new URL(mUrl.getText().toString().trim()); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(5000); conn.setReadTimeout(5000); if (conn.getResponseCode() == 200) { InputStream inputStream = conn.getInputStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); Message message = new Message(); message.obj = inputStream; mHandler.sendMessage(message); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (ProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }).start(); }}
更多相关文章
- Android 布局加载源代码分析
- android 三种定位方式 设计思路
- Android给第三方应用添加系统签名的两种方式
- android监听事件添加动作的三种方式
- 实战android菜单项之XML加载菜单与动态菜单项
- android 禁止viewpager预加载