Android+PHP+MySQL实现新闻列表(二)

本文介绍如何在Android应用中通过HttpURLConnection进行网络通信,从PHP+MySQL数据库获取新闻数据并转化为JSON。文章详细阐述了网络请求过程,包括新建线程避免主线程阻塞,使用Handler传递响应数据,以及处理图片的步骤。同时,提醒开发者注意PHP文件的正确性和AndroidManifest.xml中添加INTERNET权限。
摘要由CSDN通过智能技术生成

前面一篇说完来页面布局,总得来说页面在adapter中设置布局,ListView.setAdapter(Adapter)来加载视图样子。接下来就看看网络通信这一部分

新建一个网络通信类HttpUtils,在里面写网络请求和处理

首先定义一个getNewsJson方法,实现从数据库读取数据并得到的JSON数据。新开一个线程来处理,因为不能在主线程处理网络请求,因为一旦请求时间长一点有可能就导致主线程卡死了,停止运行,所以要新开线程,这一点在线程那也说过。网络通信 我们使用HTTP来访问网络,HttpURLConnection继承URLConnection操作Http方便快捷

具体步骤:

1.创建URL对象,并且通过url.openConnection()来连接网络

2.设置请求方式为GET,POST用于数据提交

3.返回HttpURLConnection对应的输入流,获取响应内容

这里用到的是getInputStream(),对应的getOutputStream()是返回输出流,用于向HttpURLConnection发送请求参数

4.定义BufferedReader输入流读取URL响应

5.定义StringBuilder来将读取结果添加在一起形成String

6.用handler.sendMessage()将响应内容发给主线程 ,通知主线程更新


前面也提到了,像时间啊标题之类的都可以直接从数据库获取,但是图片需要网络请求,所以我们在网络请求类中需要加上图片的处理

我们写一个setBitmap()方法,来实现从网络链接中获取图片并显示

前面步骤相同,值得说的是BitmapFactory是一个工具类,有大量可以从不同数据源解析创建Bitmap对象,其中decodeStream(InputStream is)用于从指定输入流解析创建Bitmap对象

<pre name="code" class="plain">package com.news;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.ImageView;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
 * Created by Administrator on 2016-08-25.
 */
public class HttpUtils {
    public  static  void getNewsJson(final String url,final Handler handler){
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection conn;
       
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值