HttpURLConnection的GET和POST解析

来源:互联网 发布:福州seo顾问培训 编辑:程序博客网 时间:2024/06/05 05:11

package com.kson.httpurlconnection;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.kson.httpurlconnection.bean.CarrierBean;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;


public class HttpActivity extends AppCompatActivity {
    private final String mGetUrl = "http://v.juhe.cn/expressonline/getCarriers.php?key=1b9386e9428a7fe59db20867814caa2c";
    private String mMethodName = "POST";
    private final String mPostUrl = "http://v.juhe.cn/expressonline/getCarriers.php";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_http);

        new Thread(new Runnable() {
            @Override
            public void run() {
              postData();
            }
        }).start();
   }

  /**
     * get方式请求数据,并处理数据的方法
     */
    private void getData(){
        try {
            //线程安全,因为网络请求很可能需要用到多线程,所以我们用
            StringBuffer result  = new StringBuffer();
            //创建URL对象,用于封装请求接口
            URL url = new URL(mGetUrl);
            //创建HttpURLConnection对象,用于连接请求,和处理请求过程中的相关数据
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod(mMethodName);
            //和服务器建立连接
            connection.connect();
            //根据服务器返回的响应码,做相关逻辑处理
            if (HttpURLConnection.HTTP_OK==connection.getResponseCode()){
                //客户端得到输入流
                InputStream inputStream = connection.getInputStream();
               //对输入流进行缓存封装
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                //读取输入流的数据
                String line = null;
                while ((line=bufferedReader.readLine())!=null){
                    result.append(line);
                }
               System.out.println(result.toString());

           }else{
                int errorCode = connection.getResponseCode();
                String errormsg = connection.getResponseMessage();
                //

            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * post方式请求数据
     */
    private void  postData(){


        try {
            StringBuffer result = new StringBuffer();
            String parms = "key=1b9386e9428a7fe59db20867814caa2c&dtype=json";
            URL url = new URL(mPostUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod(mMethodName);
            //支持输入流
            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.connect();

            DataOutputStream dataOutputStream = new DataOutputStream(connection.getOutputStream());
            dataOutputStream.writeBytes(parms);
            dataOutputStream.flush();
            dataOutputStream.close();

            if (HttpURLConnection.HTTP_OK==connection.getResponseCode()){
                //客户端得到输入流
                InputStream inputStream = connection.getInputStream();

                //对输入流进行缓存封装
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                //读取输入流的数据
                String line = null;
                while ((line=bufferedReader.readLine())!=null){
                    result.append(line);
                }
               parseJson(result);


                System.out.println(result.toString());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    /**
     * 解析返回结果为bean对象
     * @param result
     */
    private void parseJson(StringBuffer result) {
        try {
            JSONObject object = new JSONObject(result.toString());
            String reason = object.getString("reason");
            System.out.println("reason:"+reason);
            JSONArray   array = object.getJSONArray("result");
            if (array!=null&&array.length()>0){
                for (int i = 0; i <array.length() ; i++) {

                    JSONObject obj = array.getJSONObject(i);
                    CarrierBean bean = new CarrierBean();
                    bean.carrier_code =obj.getString("carrier_code");
                    bean.carrier_name = obj.getString("carrier_name");
                    bean.carrier_phone = obj.getString("carrier_phone");
                }
            }


        } catch (JSONException e) {
            e.printStackTrace();
        }
    }