Http网络获取get/post
来源:互联网 发布:淘宝运营专员岗位职责 编辑:程序博客网 时间:2024/05/14 23:36
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="net.bwie.network.activity.MainActivity"> <Button android:id="@+id/next_btn" android:text="下一页POST请求" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/get_network_data_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="下载网络数据"/> <Button android:id="@+id/get_pic_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取网络图片"/> <ImageView android:id="@+id/image_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher"/>
</LinearLayout>
Bean类:
public class KaiYan { private List<ItemBean> itemList; public List<ItemBean> getItemList() { return itemList; } public void setItemList(List<ItemBean> itemList) { this.itemList = itemList; } public static class ItemBean { private String type = ""; private DataBean data; public String getType() { return type; } public void setType(String type) { this.type = type; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public static class DataBean { private String playUrl = ""; private String title = ""; public String getPlayUrl() { return playUrl; } public void setPlayUrl(String playUrl) { this.playUrl = playUrl; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } } }}** * 下一页post请求 * 使用异步任务下载网络数据 * 使用gson解析 * 注:有时间看看我讲的原生json解析 */public class MainActivity extends AppCompatActivity implements View.OnClickListener { public static final String KAI_YAN_URL = "http://baobab.kaiyanapp.com/api/v4/tabs/selected?udid=11111&vc=168&vn=3.3.1&deviceModel=Huawei%36&first_channel=eyepetizer_baidu_market&last_channel=eyepetizer_baidu_market&system_version_code=20"; protected Button mGetNetworkDataBtn; protected Button mGetPicBtn; protected ImageView mImageView; protected Button mNextBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); initView(); } @Override public void onClick(View view) { if (view.getId() == R.id.get_network_data_btn) { getDatas(); } else if (view.getId() == R.id.get_pic_btn) { getPicture(); } else if (view.getId() == R.id.next_btn) { PostActivity.startActivity(this); } } private void getDatas() { MyTask task = new MyTask(); task.execute(KAI_YAN_URL); } private void getPicture() { String imgUrl = "http://img.kaiyanapp.com/1699f3946ccd281230a1d887d169439f.png?imageMogr2/quality/60/format/jpg"; Picasso .with(this) .load(imgUrl) .into(mImageView); } private void initView() { mGetNetworkDataBtn = (Button) findViewById(R.id.get_network_data_btn); mGetNetworkDataBtn.setOnClickListener(MainActivity.this); mGetPicBtn = (Button) findViewById(R.id.get_pic_btn); mGetPicBtn.setOnClickListener(MainActivity.this); mImageView = (ImageView) findViewById(R.id.image_view); mNextBtn = (Button) findViewById(R.id.next_btn); mNextBtn.setOnClickListener(MainActivity.this); } private class MyTask extends AsyncTask<String, Void, List<KaiYan.ItemBean>> { @Override protected List<KaiYan.ItemBean> doInBackground(String... params) { String requestUrl = params[0]; // 使用HTTPUrlConnection try { URL url = new URL(requestUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 配置connection connection.setRequestMethod("GET");// GET或POST必须大写 // 连接网络 connection.connect(); // 判断是否连接成功 if (connection.getResponseCode() == 200) { // 获取来自网络的输入流 // 使用缓冲字符输入流 // 字节流转字符流 BufferedReader br = null; br = new BufferedReader(new InputStreamReader(connection.getInputStream())); // 最终接收的json字符串 String json = ""; // 使用缓冲流读取到的每一行数据 String line = ""; while ((line = br.readLine()) != null) { json += line.trim(); } // json数据产生完毕,该解析了 Gson gson = new Gson(); KaiYan kaiYan = gson.fromJson(json, KaiYan.class); List<KaiYan.ItemBean> itemList = kaiYan.getItemList(); return itemList; } } catch (Exception e) { e.printStackTrace(); Log.d("1507", e.getMessage()); } return null; } @Override protected void onPostExecute(List<KaiYan.ItemBean> itemList) { super.onPostExecute(itemList); // 可以使用RecyclerView或ListView展示数据 for (KaiYan.ItemBean itemBean : itemList) { Log.d("1507", "type: " + itemBean.getType() + ", title: " + itemBean.getData().getTitle() + ", url" + itemBean.getData().getPlayUrl()); } } }}Post请求:<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="net.bwie.network.activity.PostActivity"> <Button android:id="@+id/post_btn" android:text="post请求" android:layout_width="wrap_content" android:layout_height="wrap_content"/></RelativeLayout>public class Person { private String name = ""; private String age = ""; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }}public class PostActivity extends AppCompatActivity implements View.OnClickListener { protected Button mPostBtn; public static void startActivity(Context context) { context.startActivity(new Intent(context, PostActivity.class)); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_post); initView(); } @Override public void onClick(View view) { if (view.getId() == R.id.post_btn) { doPost(); } } // 使用异步任务执行POST请求 private void doPost() { String url = "http://172.21.66.7:8080/postdemo"; PostTask task = new PostTask(); task.execute(url); } private void initView() { mPostBtn = (Button) findViewById(R.id.post_btn); mPostBtn.setOnClickListener(PostActivity.this); } private class PostTask extends AsyncTask<String, Void, Person> { @Override protected Person doInBackground(String... params) { String requestUrl = params[0];// try { URL url = new URL(requestUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); // 设置POST请求 connection.setRequestMethod("POST"); // 设置可向服务器输出 connection.setDoOutput(true); connection.setDoInput(true); // 打开连接 connection.connect(); // 打开连接后,向服务端写要提交的参数 // 参数格式:“name=asdasdas&age=123123” StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append("name=") .append("wuyanzu")// 拼接自己传入的姓名 .append("&") .append("age=") .append("123");// 拼接自己传入的年龄 // 获取向服务器写数据的输出流 connection.getOutputStream() .write(stringBuilder.toString().getBytes()); // 提交数据后,获取来自服务器的json数据 if (connection.getResponseCode() == 200) { BufferedReader br = null; br = new BufferedReader(new InputStreamReader(connection.getInputStream())); String json = ""; String line = ""; while ((line = br.readLine()) != null) { json += line.trim(); } // 解析 Gson gson = new Gson(); Person person = gson.fromJson(json, Person.class); return person; } } catch (Exception e) { e.printStackTrace(); Log.d("1507", e.getMessage()); } return null; } @Override protected void onPostExecute(Person person) { super.onPostExecute(person); Log.d("1507", "name:" + person.getName() + ", age: " + person.getAge()); } }}
阅读全文
0 0
- Http网络获取get/post
- Android使用HTTP GET、HTTP POST获取网络数据
- HTTP请求 GET POST 网络编程实现
- 网络请求,HTTP协议 ,GET,POST
- 网络请求 http get post 一
- Http访问网络之GET和POST
- Unity3D HTTP协议 网络通信 post get
- 【网络】HTTP 方法:GET 对比 POST
- 【http】get/post 获取请求参数
- http get或者post请求获取参数
- Http-Get/Post获取数据设置
- 【Android】使用http的Post和Get方式获取网络数据
- Android利用Get、Post 获取网络数据
- GET和POST区别HTTP网络协议GET
- android网络编程——http post 和 http get
- 【Android】【网络编程】网络协议,HTTP,TCP,Socket,Get,Post
- 【网络】HTTP中GET和POST方法的区别
- iOS 开发 中级:HTTP请求 GET POST 网络编程实现
- 移动距离
- PHP+Mysql模拟队列
- 什么是ConcurrentHashMap?
- ftp 主被动问题
- 松柏先生每日一例:古法“见南花”,赋予水泥新的生命
- Http网络获取get/post
- angularjs的过滤
- Android播放器框架分析 1
- 购物车=加减+计算+总和+全选+反选+删除
- JVM的内存管理和垃圾回收
- python爬虫时http协议以及实现代码
- 编码首行缩进使用Tab键好还是空格好?
- Calendar日历类和GregorianCalendar公历类用法的一个小结
- 数据库缓存简单使用