URLConnection的post请求网络数据和AsyncTask异步线程
来源:互联网 发布:数据漫游是什么意思 编辑:程序博客网 时间:2024/06/05 00:33
一、ManiActivity
package com.example.urlconnection1;import com.example.thread.MyAsyncTask;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.ListView;/** * 用URLConnection的post请求网络数据 * */public class MainActivity extends Activity {//定义成员变量private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找对象 lv=(ListView) super.findViewById(R.id.lv); MyAsyncTask at=new MyAsyncTask(MainActivity.this,lv);//创传值 at.execute("http://japi.juhe.cn/book/recommend.from");//开启线程,给doInBackground()方法传值 } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
package com.example.thread;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import android.content.Context;import android.os.AsyncTask;import android.util.Log;import android.widget.ArrayAdapter;import android.widget.ListView;import com.example.model.One;import com.google.gson.Gson;//创建一个类,继承AsyncTask,异步线程public class MyAsyncTask extends AsyncTask<String, String, One>{//定义成员变量private Context context;private ListView lv;public MyAsyncTask(Context context, ListView lv) {super();this.context = context;this.lv = lv;}@Overrideprotected One doInBackground(String... params) {try {URL url=new URL(params[0]);//获取传来的URLHttpURLConnection conn=(HttpURLConnection) url.openConnection();//获取HttpURLConnection对象conn.setRequestMethod("POST");//设置发送请求的方法是postconn.setDoOutput(true);//设置允许输出(post时必须设置,get是不用设置)conn.setConnectTimeout(5000);//设置连接超时的时间限制conn.setReadTimeout(5000);//设置读取时间限制conn.setRequestProperty("Charset", "UTF-8");//设置文字字符集conn.setRequestProperty("Connection", "Keep-Alive");//设置维持长连接OutputStream os=conn.getOutputStream();//获取URLConnetction对应的输出流,用于向URLConnetction发送请求参数PrintWriter pw=new PrintWriter(os);//创建文本输出流pw.print("key=188945f8e9072f0b5300f5573bac1aca&cat=1&ranks=1");//发送请求的参数pw.flush();pw.close();if(conn.getResponseCode()==200)//对响应码进行判断,是否连接成功{InputStream is=conn.getInputStream();//获取URLConnetction对应的输出流,用于获取URLConnection响应的内容byte[] bt=new byte[1024];StringBuffer sb=new StringBuffer();int readLine=0;while(-1 != (readLine=is.read(bt))){sb.append(new String(bt, 0, readLine)); ////先把字节转换成字符,再拼接成字符串 参数:1.byte数组 2.开始转换字节的下标 3.字节数组的长度 }Gson g=new Gson();One one=g.fromJson(sb.toString(), One.class);//解析JSON数据Log.e("TAG", "解析的数据是:"+one.toString()+one.result.data.toString());return one;}else{throw new RuntimeException("请求url失败");}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}//在这个方法共改变界面@Overrideprotected void onPostExecute(One result) {super.onPostExecute(result);ArrayAdapter adapter=new ArrayAdapter(context, android.R.layout.simple_list_item_1, result.result.data);lv.setAdapter(adapter);}@Overrideprotected void onPreExecute() {// TODO Auto-generated method stubsuper.onPreExecute();}@Overrideprotected void onProgressUpdate(String... values) {// TODO Auto-generated method stubsuper.onProgressUpdate(values);}}
0 0
- URLConnection的post请求网络数据和AsyncTask异步线程
- okhttp 第三方 网络数据请求 异步get请求 和异步post请求 同步请求
- 通过AsyncTask实现网络请求的方式,get和post
- 通过AsyncTask实现网络请求的方式,get和post
- android网络应用URLConnection提交请求GET和POST
- 42.网络请求POST同步和异步
- 我的Android之旅(十)----URI 异步任务AsyncTask和get || post请求
- android 网络数据请求步骤 一 异步操作 AsyncTask
- asyncTask 异步网络请求数据 判断适配器为空
- 封装AsyncTask异步请求网络
- AsyncTask网络请求数据
- 【iOS-网络】使用异步的post请求
- 利用线程和异步线程AsyncTask获取网络图片
- 网络数据请求(同步/异步连接下的GET/POST请求)
- 网络相册:Gallery+AsyncTask+URLConnection 实现异步加载网络图片
- 网络相册:Gallery+AsyncTask+URLConnection 实现异步加载网络图片
- 使用URLConnection发送GET和POST请求
- 网络处理2-异步POST请求和同步请求
- mysql的外键约束条件及注意事项
- typedef给数据类型起别名
- android popupWindow
- Java 集合框架(JCF)
- 15款android设备上的代码编辑器
- URLConnection的post请求网络数据和AsyncTask异步线程
- kafka 安装和测试
- 排序算法—堆排序算法分析与实现(Python)
- 计算机学院大学生程序设计竞赛(2015’12)Happy Value
- C函数指针
- 计算机学院大学生程序设计竞赛(2015’12)Bitwise Equations
- C/C++中整数与浮点数在内存中的表示方式
- BZOJ3295 CQOI2011 动态逆序对
- Android应用开发之自定义View触摸相关工具类全解