Android中 使用HttpURLConnection实现GET请求
2016-09-08 11:50
337 查看
Android6.0中把Apache HTTP Client所有的包与类都标记为deprecated不再建议使用所有跟HTTP相关的数据请求与提交操作都通过HttpURLConnection类实现,刚刚用HttpURLConnection给朋友做了一个通过GET请求并且实现json解析的列子大家先看看效果图
package com.haiwei.httptest; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.TextView; public class MainActivity extends Activity { private TextView tv_content,tv_json; private ProgressDialog dialog; private HttpURLConnection conn; private String testUrl = "http://ysdktest.qq.com/auth/qq_check_token/?timestamp=&appid=&sig=&openid=&openkey=&userip"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { tv_content = (TextView) findViewById(R.id.tv_content); tv_json = (TextView) findViewById(R.id.tv_json); dialog = new ProgressDialog(this); dialog.setMessage("正在加载数据,请稍候..."); httpResponse(); } private void httpResponse(){ dialog.show(); new Thread(new Runnable() { @Override public void run() { try { URL url = new URL(testUrl); conn = (HttpURLConnection)url.openConnection(); conn.setRequestMethod("GET"); if (conn.getResponseCode() == 200) { handler.postDelayed(new Runnable() { @Override public void run() { handler.sendEmptyMessage(0); } }, 2000); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }).start(); } public void parseJsonClick(View view){ DataBean dataBean = new DataBean(); String json = tv_json.getText().toString().trim(); try { JSONObject jsonObject = new JSONObject(json); dataBean.setRet(jsonObject.getInt("ret")); dataBean.setMsg(jsonObject.getString("msg")); tv_content.setText("返回状态:" + dataBean.getRet() + "返回信息:" + dataBean.getMsg()); } catch (JSONException e) { e.printStackTrace(); } } Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { if (msg.what == 0) { try { int BUFFER_SIZE = 4096; InputStream inputStream; String resultData = ""; StringBuffer out = new StringBuffer(); byte[] b = new byte[BUFFER_SIZE]; inputStream = new BufferedInputStream(conn.getInputStream()); int n; while ((n=inputStream.read(b))!=-1){ out.append(new String(b,0,n)); } resultData = out.toString(); tv_json.setText(resultData+""); } catch (IOException e) { e.printStackTrace(); } dialog.dismiss(); } }; }; }上面通过HttpURLConnection请求状态200为成功 400为失败 成功后通过handle发送通知 通过inputStream拼接为json字符串 解析式通过原生解析 记得在AndroidManifest中加入<uses-permission android:name="android.permission.INTERNET"/>网络访问权限 代码也非常简单 想信大家一看就很明白了
相关文章推荐
- 使用HttpURLConnection实现在android客户端和服务器之间传递对象
- android(21)(使用HttpURLConnection,HttpClient和AsyncHttpClient分别实现post和get请求数据)
- Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
- Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
- Android中使用HttpURLConnection实现GET POST JSON数据与下载图片
- android使用HttpURLConnection实现带参数文件上传
- Android 4.4以上使用HttpURLConnection底层使用OkHttp实现的源码分析
- android使用HttpURLConnection实现带参数文件上传
- Android中如何使用HttpURLConnection实现GET POST JSON数据
- Golang+Android(使用HttpURLConnection)实现文件上传
- Android使用HttpURLConnection发送Get请求
- Android 使用HttpURLConnection实现多线程下载 笔记
- Android使用HttpURLConnection向服务器发送post和get请求
- 【Android进阶】使用HttpURLConnection实现图片的下载与现显示
- node.js+android(使用HttpURLConnection和HttpClient)实现文件上传
- 使用HttpURLConnection实现在android客户端和服务器之间传递对象
- 使用HttpURLConnection实现在android客户端和服务器之间传递对象
- Android开发_使用HttpURLConnection实现多线程下载
- Android移动开发-使用HttpURLConnection实现多线程的下载
- Android中如何使用HttpURLConnection实现GET POST JSON数据与下载图片