本身簡單封裝的本身項目須要的http請求

package www.tydic.com.util;

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Map;

/**
 *
 */
public class HttpUtils {
    /*
     * Function  :   發送Post請求到服務器
     * Param     :   params請求體內容,encode編碼格式
     */
    public static String submitPostData(String strUrlPath,String params, String encode) {

        byte[] data = params.getBytes();
        try {
            URL url = new URL(strUrlPath);

            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
            httpURLConnection.setConnectTimeout(3000);     //設置鏈接超時時間
            httpURLConnection.setDoInput(true);                  //打開輸入流,以便從服務器獲取數據
            httpURLConnection.setDoOutput(true);                 //打開輸出流,以便向服務器提交數據
            httpURLConnection.setRequestMethod("POST");     //設置以Post方式提交數據
            httpURLConnection.setUseCaches(false);               //使用Post方式不能使用緩存
            httpURLConnection.setInstanceFollowRedirects(true);
            //設置請求體的類型是文本類型
            httpURLConnection.setRequestProperty("Content-Type", "application/json");
            httpURLConnection.connect();
            httpURLConnection.setConnectTimeout(10000);
            DataOutputStream dataOutputStream = new DataOutputStream(httpURLConnection.getOutputStream());
            dataOutputStream.write(params.getBytes());
            dataOutputStream.flush();
            //得到輸出流,向服務器寫入數據
            OutputStream outputStream = httpURLConnection.getOutputStream();
            outputStream.write(data);
            int response = httpURLConnection.getResponseCode();            //得到服務器的響應碼
            if(response == HttpURLConnection.HTTP_OK) {
                InputStream inptStream = httpURLConnection.getInputStream();
                System.out.println("=================返回數據======================");
                String resutStr = dealResponseResult(inptStream);
                String decresultStr = DesEncryptUtil.decrypt(resutStr);
                return decresultStr;
                //處理服務器的響應結果
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "";
    }

    /*
     * Function  :   封裝請求體信息
     * Param     :   params請求體內容,encode編碼格式
     */
    public static StringBuffer getRequestData(Map<String, String> params, String encode) {
        StringBuffer stringBuffer = new StringBuffer();        //存儲封裝好的請求體信息
        try {
            for(Map.Entry<String, String> entry : params.entrySet()) {
                stringBuffer.append(entry.getKey())
                        .append("=")
                        .append(URLEncoder.encode(entry.getValue(), encode))
                        .append("&");
            }
            stringBuffer.deleteCharAt(stringBuffer.length() - 1);    //刪除最後的一個"&"
        } catch (Exception e) {
            e.printStackTrace();
        }
        return stringBuffer;
    }

    /*
     * Function  :   處理服務器的響應結果(將輸入流轉化成字符串)
     * Param     :   inputStream服務器的響應輸入流
     */
    public static String dealResponseResult(InputStream inputStream) {
        String resultData = null;      //存儲處理結果
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] data = new byte[1024];
        int len = 0;
        try {
            while((len = inputStream.read(data)) != -1) {
                byteArrayOutputStream.write(data, 0, len);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        resultData = new String(byteArrayOutputStream.toByteArray());
        return resultData;
    }

}

在項目裏如何使用:java

// TODO: http request.
            String account = loginAccount.getText().toString().trim();
            String password = loginPassword.getText().toString().trim();
            Map<String, String> paramsMap = new HashMap<String, String>();
            paramsMap.put("login_nbr", account);
            paramsMap.put("login_type", Constant.LOGIN_TYPE);
            paramsMap.put("pwd", password);
            Gson gson = new Gson();
            String all =  gson.toJson(paramsMap);
            all = DesEncryptUtil.encrypt(all);
            String resultData = HttpUtils.submitPostData(Constant.APP_PAHT_LOGIN, all, "UTF-8");
            if (resultData==""){
                resultData="";
            }

            Message msg = new Message();
            Bundle datas = new Bundle();
            datas.putString("value", resultData);
            datas.putString("account", account);
            datas.putString("password", password);
            msg.setData(datas);
            handler.sendMessage(msg);

這樣就能夠直接獲取數據了。對resultData數據如何處理以下:json

能夠使用Gson處理,我使用的Java的JSONObject處理工具緩存

方法以下:服務器

Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            Bundle data = msg.getData();
            String val = data.getString("value");
            String account = data.getString("account");
            String password = data.getString("password");
            if ("".equals(val)||val.equals(null)){
                Toast.makeText(MainActivity.this,"網絡連接錯誤,請重試",Toast.LENGTH_SHORT).show();
                return;
            }
            JSONObject resultJson = JSONObject.fromObject(val);
            String resultCode =  resultJson.get("CODE").toString();
            if (resultCode.equals(Constant.RESULT_CODE)){
                String CUST_NAME =  resultJson.get("CUST_NAME").toString();
                String RESULT =  resultJson.get("RESULT").toString();
                String CUST_ID =  resultJson.get("CUST_ID").toString();
                String ORG_CODE =  resultJson.get("ORG_CODE").toString();
                String ORG_ID =  resultJson.get("ORG_ID").toString();
                /**
                 * SharedPreferences保存數據
                 */
                SharedPreferencesUtils.put(MainActivity.this,"account",account);
                SharedPreferencesUtils.put(MainActivity.this,"password",password);
                SharedPreferencesUtils.put(MainActivity.this,"CUST_NAME",CUST_NAME);
                SharedPreferencesUtils.put(MainActivity.this,"RESULT",RESULT);
                SharedPreferencesUtils.put(MainActivity.this,"CUST_ID",CUST_ID);
                SharedPreferencesUtils.put(MainActivity.this,"ORG_CODE",ORG_CODE);
                SharedPreferencesUtils.put(MainActivity.this,"ORG_ID",ORG_ID);
                /**
                 * 登陸數據存儲完畢,進行界面跳轉
                 */
                Intent it = new Intent(MainActivity.this,MainBusinessActivity.class);
                startActivity(it);
                finish();
            }else {
                Toast.makeText(MainActivity.this,"帳號或密碼錯誤,請重試",Toast.LENGTH_SHORT).show();
            }
            Log.i("ssssss","請求結果:" + resultJson.toString());

        }
    };
相關文章
相關標籤/搜索