HttpURLConnection 和 HttpClient

受限添加所需权限

<uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="16" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

导入所需要的jar包

commons-codec-1.7.jar

commons-httpclient.jar

commons-logging-1.1.1.jar

httpclient-4.2.2.jar

httpcore-4.2.2.jar

gson-2.2.4.jar


主函数代码

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;

import com.google.gson.Gson;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ListView lv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化控件
        Button button = (Button) findViewById(R.id.button);

        Button button2 = (Button) findViewById(R.id.button2);

        lv = (ListView) findViewById(R.id.lv);

        //button按钮的监听事件
        button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                int flag = 0;

                GetData(flag);
            }

        });

        button2.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                int flag = 1;

                GetData(flag);

            }

        });

    }

    protected void GetData(int flag) {

        //判断进行HttpClient还是httpurlconnection
        if (flag == 0) {

            //AsyncTask异步回调
            MyAsyncTask myAsyncTask = new MyAsyncTask();

            String whichone = "connection";

            myAsyncTask.execute(whichone);

        }

        if (flag == 1) {

            MyAsyncTask myAsyncTask = new MyAsyncTask();

            String whichone = "client";

            myAsyncTask.execute(whichone);

        }

    }


    public String StreamTOString(InputStream input, String string) {

        //Stream流转换为String字符串
        StringBuilder builder;

        try {

            InputStreamReader streamReader = new InputStreamReader(input, string);

            BufferedReader reader = new BufferedReader(streamReader);

            String content;

            builder = new StringBuilder();

            while ((content = reader.readLine()) != null) {

                builder.append(content);

            }

            return builder.toString();

        } catch (Exception e) {

            e.printStackTrace();

        }

        return null;

    }


    class MyAsyncTask extends AsyncTask<String, Integer, String> {

        //子线程执行
        @Override
        protected String doInBackground(String... params) {

            if (params[0].equals("connection")) {

                //HttpUrlConnection
                Log.d("zzz", "执行connection");

                try {

                    String path = "http://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10";

                    URL url = new URL(path);

                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();

                    connection.setRequestMethod("POST");

                    connection.setConnectTimeout(5000);

                    connection.setReadTimeout(5000);

                    int responseCode = connection.getResponseCode();

                    String substring = null;

                    if (responseCode == 200) {

                        //当返回码为200时
                        InputStream inputStream = connection.getInputStream();

                        String streamTOString = StreamTOString(inputStream, "utf-8");

                        substring = streamTOString.substring(streamTOString.indexOf("{"));

                    }

                    return substring;

                } catch (Exception e) {

                    e.printStackTrace();

                }

            } else {

                //HttpClient
                Log.d("zzz", "执行client");

                try {

                    HttpClient client = new DefaultHttpClient();

		    //HttpPost post = new HttpPost("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10");

                    HttpGet get = new HttpGet("http://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10");

                    HttpResponse response = client.execute(get);

                    if (response.getStatusLine().getStatusCode() == 200) {

                        HttpEntity entity = response.getEntity();

                        Log.i("zzz", entity.toString());

                        String string = EntityUtils.toString(entity, "utf-8");

                        String substring = string.substring(string.indexOf("{"));

                        Log.i("zzz", substring);

                        return substring;

                    }

                } catch (Exception e) {

                    e.printStackTrace();

                }

            }

            return null;

        }

        @Override
        protected void onPostExecute(String result) {

            super.onPostExecute(result);

            //进行主线程UI更新
            Log.d("zzz", result);

            Gson gson = new Gson();

            Root fromJson = gson.fromJson(result, Root.class);

            List<Newslist> list = fromJson.getNewslist();

            Log.d("zzz", list.toString());

            MyAdapter myAdapter = new MyAdapter(list, MainActivity.this);

            lv.setAdapter(myAdapter);

        }

    }

}



主页面布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/line"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="HttpUrlConnection请求" />

        <Button
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="HttpClient请求" />
    </LinearLayout>

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>

</LinearLayout>



适配器代码(MyAdapter)

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.List;

public class MyAdapter extends BaseAdapter {

    private List<Newslist> list;

    Context context;

    //有参构造
    public MyAdapter(List<Newslist> list, Context context) {

        this.list = list;

        this.context = context;

    }

    @Override
    public int getCount() {

        //返回list的长度
        return list.size();

    }

    @Override
    public Object getItem(int position) {

        //返回list下标对应对象
        return list.get(position);

    }

    @Override
    public long getItemId(int position) {

        return position;

    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        //优化ViewHolder
        ViewHolder vh;

        if (convertView == null) {

            convertView = View.inflate(context, R.layout.item, null);

            vh = new ViewHolder();

            vh.img = (ImageView) convertView.findViewById(R.id.img);

            vh.tv_title = (TextView) convertView.findViewById(R.id.tv_title);

            vh.tv_time = (TextView) convertView.findViewById(R.id.tv_time);

            convertView.setTag(vh);

        } else {

            vh = (ViewHolder) convertView.getTag();

        }

        vh.tv_time.setText(list.get(position).getCtime());

        vh.tv_title.setText(list.get(position).getTitle());

        //ImageUtil类进行设置图片
        new ImageUtil().SetImage(list.get(position).getPicUrl(), vh.img);

        //利用图片二次采样获取网络图片(如果使用二次采样,不要忘记添加权限)
        //ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(),vh.img);

       return convertView;

    }

    class ViewHolder {

        TextView tv_title;

        TextView tv_time;

        ImageView img;
        
    }

}


item布局代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/img"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_toRightOf="@id/img"
        android:text="震惊!"
        android:textSize="20sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tv_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@id/img"
        android:layout_alignLeft="@id/tv_title"
        android:text="2017-09-04" />

</RelativeLayout>

获取网络图片

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

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class ImageUtil {
    
    ImageView img;
    
    private Handler myhandler = new Handler() {
        
        public void handleMessage(Message msg) {
            
            Bitmap bitmap = (Bitmap) msg.obj;
            
            img.setImageBitmap(bitmap);
            
        }
        
    };

    public void SetImage(final String path, ImageView img) {
        
        this.img = img;
        
        new Thread() {
            
            public void run() {
                
                try {
                    
                    URL url = new URL(path);
                    
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                   
                    connection.setRequestMethod("POST");
                    
                    connection.setConnectTimeout(5000);
                    
                    connection.setReadTimeout(5000);

                    if (connection.getResponseCode() == 200) {
                        
                        InputStream inputStream = connection.getInputStream();
                        
                        Bitmap bitmap = BitmapFactory.decodeStream(inputStream);

                        Message msg = Message.obtain();
                        
                        msg.obj = bitmap;
                        
                        myhandler.sendMessage(msg);
                        
                    }
                    
                } catch (Exception e) {
                    
                    e.printStackTrace();
                    
                }
                
            }
            
        }.start();

    }

}


还可以直接写二次采样,代码如下

import android.app.Application;

import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;

public class Img extends Application {

    @Override
    public void onCreate() {

        //图片的二次采样
        DisplayImageOptions options = new DisplayImageOptions.Builder().showImageOnLoading(R.mipmap.ic_launcher).displayer(new FadeInBitmapDisplayer(2000)).cacheInMemory(true).cacheOnDisc(true).build();
        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).defaultDisplayImageOptions(options).threadPoolSize(5).build();
        ImageLoader.getInstance().init(configuration);

        super.onCreate();
    }
}

Bean类(需找对应的接口自己进行解析,这里仅供参考)

import java.util.List;

public class Newslist {
    private String ctime;

    private String title;

    private String description;

    private String picUrl;

    private String url;

    public void setCtime(String ctime) {
        this.ctime = ctime;
    }

    public String getCtime() {
        return this.ctime;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTitle() {
        return this.title;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getDescription() {
        return this.description;
    }

    public void setPicUrl(String picUrl) {
        this.picUrl = picUrl;
    }

    public String getPicUrl() {
        return this.picUrl;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUrl() {
        return this.url;
    }

    @Override
    public String toString() {
        return "Newslist [ctime=" + ctime + ", title=" + title
                + ", description=" + description + ", picUrl=" + picUrl
                + ", url=" + url + "]";
    }

    public class Root {
        private int code;

        private String msg;

        private List<Newslist> newslist;

        public void setCode(int code) {
            this.code = code;
        }

        public int getCode() {
            return this.code;
        }

        public void setMsg(String msg) {
            this.msg = msg;
        }

        public String getMsg() {
            return this.msg;
        }

        public void setNewslist(List<Newslist> newslist) {
            this.newslist = newslist;
        }

        public List<Newslist> getNewslist() {
            return this.newslist;
        }

        @Override
        public String toString() {
            return "Root [code=" + code + ", msg=" + msg + ", newslist=" + newslist
                    + "]";
        }


    }

}



这里的代码仅供参考,详细代码请自己修改补充

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于微信小程序的家政服务预约系统采用PHP语言和微信小程序技术,数据库采用Mysql,运行软件为微信开发者工具。本系统实现了管理员和客户、员工三个角色的功能。管理员的功能为客户管理、员工管理、家政服务管理、服务预约管理、员工风采管理、客户需求管理、接单管理等。客户的功能为查看家政服务进行预约和发布自己的需求以及管理预约信息和接单信息等。员工可以查看预约信息和进行接单。本系统实现了网上预约家政服务的流程化管理,可以帮助工作人员的管理工作和帮助客户查询家政服务的相关信息,改变了客户找家政服务的方式,提高了预约家政服务的效率。 本系统是针对网上预约家政服务开发的工作管理系统,包括到所有的工作内容。可以使网上预约家政服务的工作合理化和流程化。本系统包括手机端设计和电脑端设计,有界面和数据库。本系统的使用角色分为管理员和客户、员工三个身份。管理员可以管理系统里的所有信息。员工可以发布服务信息和查询客户的需求进行接单。客户可以发布需求和预约家政服务以及管理预约信息、接单信息。 本功能可以实现家政服务信息的查询和删除,管理员添加家政服务信息功能填写正确的信息就可以实现家政服务信息的添加,点击家政服务信息管理功能可以看到基于微信小程序的家政服务预约系统里所有家政服务的信息,在添加家政服务信息的界面里需要填写标题信息,当信息填写不正确就会造成家政服务信息添加失败。员工风采信息可以使客户更好的了解员工。员工风采信息管理的流程为,管理员点击员工风采信息管理功能,查看员工风采信息,点击员工风采信息添加功能,输入员工风采信息然后点击提交按钮就可以完成员工风采信息的添加。客户需求信息关系着客户的家政服务预约,管理员可以查询和修改客户需求信息,还可以查看客户需求的添加时间。接单信息属于本系统里的核心数据,管理员可以对接单的信息进行查询。本功能设计的目的可以使家政服务进行及时的安排。管理员可以查询员工信息,可以进行修改删除。 客户可以查看自己的预约和修改自己的资料并发布需求以及管理接单信息等。 在首页里可以看到管理员添加和管理的信息,客户可以在首页里进行家政服务的预约和公司介绍信息的了解。 员工可以查询客户需求进行接单以及管理家政服务信息和留言信息、收藏信息等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值