自己簡單封裝的自己項目需要的http請求

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

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;}}

在項目里如何使用:

// 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數據如何處理如下:

可以使用Gson處理,我使用的Java的JSONObject處理工具

方法如下:

Handler handler = new Handler(){@Overridepublic 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());}};

?

轉載于:https://my.oschina.net/u/1399599/blog/853411

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457048.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457048.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457048.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

excel導入linux亂碼怎么解決方法,,請大家都來看下,Excel導入有亂碼?原因出在哪里?應該怎么解決?...

老師&#xff0c;感謝你再次的回答。我按照您的方法操作&#xff0c;轉換utf-8另外為CSV格式&#xff0c;然后這個CSV格式在Notepad 編輯器中打開后&#xff0c;沒有亂碼&#xff0c;μ 符號(希臘字符)正確顯示。我想導入文件已經準備完畢&#xff0c;當我導入的時候&#xff0…

Oracle 正則表達式

一. 正則表達式簡介: 正則表達式&#xff0c;就是以某種模式來匹配一類字符串。一旦概括了某類字符串&#xff0c;那么正則表達式即可用于針對字符串的各種相關操作。例如&#xff0c;判斷匹配性&#xff0c;進行字符串的重新組合等。正則表達式提供了字符串處理的快捷方式。…

python編程中的if __name__ == 'main': 的作用和原理[2]

這個問題來自于知乎用戶的提問&#xff0c;當時看到這個問題&#xff0c;我只是做了下簡單的回答。后來我發現&#xff0c;對于很多人來說&#xff0c;更準確的說應該是大部分的 Python 初學者&#xff0c;對這個問題理解的不是很深刻。所以這里我來做下總結&#xff0c;并試圖…

Java基礎中按值傳遞和引用傳遞詳解

下面是我在網上看到的一個帖子&#xff0c;解釋的感覺挺全面&#xff0c;就轉過來&#xff0c;以供以后學習參考&#xff1a; 1&#xff1a;按值傳遞是什么 指的是在方法調用時&#xff0c;傳遞的參數是按值的拷貝傳遞。示例如下&#xff1a; [java] view plaincopy public cla…

【Foreign】采蘑菇 [點分治]

采蘑菇 Time Limit: 20 Sec Memory Limit: 256 MBDescription Input Output Sample Input 51 2 3 2 31 21 32 42 5Sample Output 10912911HINT Main idea 詢問從以每個點為起始點時&#xff0c;各條路徑上的顏色種類的和。 Solution 我們看到題目&#xff0c;立馬想到了O(n^2)…

c語言迷宮游戲怎么存放坐標,求解迷宮問題(c語言,很詳細哦

《求解迷宮問題(c語言,很詳細哦》由會員分享&#xff0c;可在線閱讀&#xff0c;更多相關《求解迷宮問題(c語言,很詳細哦(5頁珍藏版)》請在人人文庫網上搜索。1、求迷宮問題就是求出從入口到出口的路徑。在求解時 , 通常用的是 “窮舉求解”的方法 ,即從入口出發 ,順某一方向向…

模塊概述

概述 目前代碼比較少&#xff0c;寫在一個文件中還體現不出什么缺點&#xff0c;但是隨著代碼量越來越多&#xff0c; 代碼就越來越難以維護 為了解決難以維護的問題&#xff0c;我們把很多相似功能的函數分組&#xff0c;分別放到不同的文件中取。這樣每個文件所包含的內容相…

【MySQL】PREPARE 的應用

簡單的用set或者declare語句定義變量&#xff0c;然后直接作為sql的表名是不行的&#xff0c;mysql會把變量名當作表名。在其他的sql數據庫中也是如此&#xff0c;mssql的解決方法是將整條sql語句作為變量&#xff0c;其中穿插變量作為表名&#xff0c;然后用sp_executesql調用…

簡歷要求中“ 扎實的JAVA基礎”的學習方法

最近在頭條看到一篇關于Java基礎學習的文章&#xff0c;感覺寫的很不錯&#xff0c;分享一下&#xff0c;希望對大家有幫助 什么東西算作Java基礎&#xff1f;學到什么程度才算扎實&#xff1f; 這些問題的答案&#xff0c;LZ已經用文言文告訴你了&#xff0c;咳咳&#xff0c;…

C++11 tuple的使用

多少分轉載于:https://www.cnblogs.com/DswCnblog/p/6524832.html

c語言程序設計貪吃蛇需求分析,C語言編程新手入門基礎進階學習!貪吃蛇小游戲演示和說明...

C語言是面向過程的&#xff0c;而C&#xff0b;&#xff0b;是面向對象的設計貪吃蛇游戲的主要目的是讓大家夯實C語言基礎&#xff0c;訓練編程思維&#xff0c;培養解決問題的思路&#xff0c;領略多姿多彩的C語言。游戲開始后&#xff0c;會在中間位置出現一條只有三個節點的…

解決bash: mysql: command not found 的方法【linux mysql命令 】

linux下&#xff0c;在mysql正常運行的情況下&#xff0c;輸入mysql提示&#xff1a; mysql command not found 遇上-bash: mysql: command not found的情況別著急&#xff0c;這個是因為/usr/local/bin目錄下缺失mysql導致&#xff0c;只需要以下方法即可以解決&#xff1a; …

堆和棧的區別(經典干貨)

一、預備知識—程序的內存分配 一個由C/C編譯的程序占用的內存分為以下幾個部分 1、棧區&#xff08;stack&#xff09;— 由編譯器自動分配釋放 &#xff0c;存放函數的參數值&#xff0c;局部變量的值等。其 操作方式類似于 數據結構 中的棧。 2、堆區&#xff08;he…

Strus2中關于ValueStack詳解

什么是ValueStack 它是一個接口com.opensymphony.xwork2.util.ValueStack。我們使用它是將其做為一個容器&#xff0c;用于攜帶action數據到頁面。在頁面上通過ognl表達式獲取數據。 valueStack主要是將action數據攜帶到頁面上&#xff0c;通過ognl獲取數據 1.ValueStack有一個…

Airbnb React/JSX 編碼規范

Airbnb React/JSX 編碼規范算是最合理的React/JSX編碼規范之一了內容目錄基本規范Class vs React.createClass vs stateless命名聲明模塊代碼對齊單引號還是雙引號空格屬性Refs引用括號標簽函數/方法模塊生命周期isMountedBasic Rules 基本規范每個文件只寫一個模塊.但是多個無…

Mysql數據庫使用總結

mysql數據庫使用總結 本文主要記錄一些mysql日常使用的命令&#xff0c;供以后查詢。 1.更改root密碼 mysqladmin -uroot password yourpassword 2.遠程登陸mysql服務器 mysql -uroot -p -h192.168.137.10 -P3306 3.查詢數據庫 show databases; 4.進入某個數據庫 use databa…

c語言遞歸漢諾塔次數,漢諾塔問題(C語言經典遞歸問題(一))

把A桿上的金盤全部移到C桿上&#xff0c;并仍保持原有順序疊好。操作規則&#xff1a;每次只能移動一個盤子&#xff0c;并且在移動過程中三根桿上都始終保持大盤在下&#xff0c;小盤在上&#xff0c;操作過程中盤子可以置于A、B、C任一桿上。思路&#xff1a;圖解&#xff1a…

Eclipes導入的項目中的中文都是亂碼的解決辦法

把項目導入Eclipse時&#xff0c;里邊的中文全是亂碼&#xff0c;試了很多方法&#xff0c;最終總結一下&#xff01; eclipse之所以會出現亂碼問題是因為eclipse編輯器選擇的編碼規則是可變的。一般默認都是UTF-8或者GBK&#xff0c;當從外部導入的一個工程時&#xff0c;如果…

理解瀏覽器是如何加載及渲染網頁的

先上圖&#xff0c;我們再慢慢解釋&#xff0c;這圖就是瀏覽器加載網頁的一個過程 當我們在瀏覽器輸入一個地址&#xff08;比如:http://toadw.cn&#xff09;,那么點擊回車后&#xff0c;瀏覽器是如何加載網頁的呢&#xff1f; 加載過程 一開始瀏覽器是不知道你輸入的http://t…

CentOS下的Mysql的安裝和使用

1.使用安裝命令 &#xff1a;yum -y install mysql mysql-server mysql-devel 安裝完成卻發現Myserver安裝缺失&#xff0c;在網上找原因&#xff0c;原來是因為CentOS 7上把MySQL從默認軟件列表中移除了&#xff0c;用MariaDB來代替&#xff0c;所以這導致我們必須要去官網上…