Android 通過httpclient請求web伺服器,並解決使用者登入session保持
package com.rainet.tiis.network; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.CookieStore; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.params.HttpClientParams; import org.apache.http.cookie.Cookie; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.params.HttpProtocolParams; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; import android.util.Log; /** * @project: TIIS * @Title: SimpleClient.java * @Package com.rainet.tiis.network * @Description: HTTP請求factory * @author 楊貴鬆 * @date 2014-3-18 下午12:39:23 * @version V1.0 */ public class SimpleClient { private static HttpParams httpParams; private static DefaultHttpClient httpClient; private static String JSESSIONID; //定義一個靜態的欄位,儲存sessionID /** * @Title: getHttpClient * @author 楊貴鬆 * @date 2014-3-18 下午1:11:18 * @Description: 獲取HttpClient * @return * @throws Exception * HttpClient 返回 */ public static HttpClient getHttpClient() throws Exception { // 建立 HttpParams 以用來設定 HTTP 引數(這一部分不是必需的) httpParams = new BasicHttpParams(); // 設定連線超時和 Socket 超時,以及 Socket 快取大小 HttpConnectionParams.setConnectionTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSoTimeout(httpParams, 20 * 1000); HttpConnectionParams.setSocketBufferSize(httpParams, 8192); // 設定重定向,預設為 true HttpClientParams.setRedirecting(httpParams, true); // 設定 user agent String userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2) Gecko/20100115 Firefox/3.6"; HttpProtocolParams.setUserAgent(httpParams, userAgent); // 建立一個 HttpClient 例項 // 注意 HttpClient httpClient = new HttpClient(); 是Commons HttpClient // 中的用法,在 Android 1.5 中我們需要使用 Apache 的預設實現 DefaultHttpClient httpClient = new DefaultHttpClient(httpParams); return httpClient; } /** * @Title: doGet * @author 楊貴鬆 * @date 2014-3-18 下午12:39:58 * @Description: doGet請求 * @param url * @param params * @return * @throws Exception * String 返回 */ @SuppressWarnings("rawtypes") public static String doGet(String url, Map params) throws Exception { /* 建立HTTPGet物件 */ String paramStr = ""; if (params != null) { Iterator iter = params.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); paramStr += paramStr = "&" + key + "=" + val; } } if (!paramStr.equals("")) { paramStr = paramStr.replaceFirst("&", "?"); url += paramStr; } HttpGet httpRequest = new HttpGet(url); String strResult = "doGetError"; /* 傳送請求並等待響應 */ HttpResponse httpResponse = httpClient.execute(httpRequest); /* 若狀態碼為200 ok */ if (httpResponse.getStatusLine().getStatusCode() == 200) { /* 讀返回資料 */ strResult = EntityUtils.toString(httpResponse.getEntity()); } else { strResult = "Error Response: " + httpResponse.getStatusLine().toString(); } Log.v("strResult", strResult); return strResult; } /** * @Title: doPost * @author 楊貴鬆 * @date 2014-3-18 下午12:39:38 * @Description: doPost請求 * @param url * @param params * @return * @throws Exception * String 返回 */ public static String doPost(String url, List<NameValuePair> params) throws Exception { /* 建立HTTPPost物件 */ HttpPost httpRequest = new HttpPost(url); String strResult = "doPostError"; /* 新增請求引數到請求物件 */ if (params != null && params.size() > 0) { httpRequest.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8)); } if(null != JSESSIONID){ httpRequest.setHeader("Cookie", "JSESSIONID="+JSESSIONID); } /* 傳送請求並等待響應 */ HttpResponse httpResponse = httpClient.execute(httpRequest); /* 若狀態碼為200 ok */ if (httpResponse.getStatusLine().getStatusCode() == 200) { /* 讀返回資料 */ strResult = EntityUtils.toString(httpResponse.getEntity()); /* 獲取cookieStore */ CookieStore cookieStore = httpClient.getCookieStore(); List<Cookie> cookies = cookieStore.getCookies(); for(int i=0;i<cookies.size();i++){ if("JSESSIONID".equals(cookies.get(i).getName())){ JSESSIONID = cookies.get(i).getValue(); break; } } } Log.v("strResult", strResult); return strResult; } }
相關推薦
Android 通過httpclient請求web伺服器,並解決使用者登入session保持
package com.rainet.tiis.network; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.http.HttpRes
怎樣在Win7系統中搭建Web伺服器,並在區域網中訪問
第一步:開啟控制面板 第二步:進入<程式> 第三步:開啟或關閉windows功能 第四步:點選展開Internet資訊服務,全部都選中 第五步:關閉防火牆,並開啟全球資訊網服務(http)
在linux下通過nfs搭建檔案伺服器,並實現掛載
今天做不成的事,明天也不會做好。 同學們,我們今天來學習在linux下搭建nfs檔案伺服器,並在linux和windows下進行掛載。最開始,專案的部署是和檔案放在一起的,後來,隨著訪問的人數增多,就需要把檔案單獨拿出來放到一個伺服器,這樣能
MFC 通過 http (post/get) 訪問WEB(介面)伺服器,並取得伺服器返回資料
關鍵系統函式 CHttpConnection* CInternetSession::GetHttpConnection CHttpFile* CHttpConnection::OpenRequest CHttpFile::SendRequest CIntern
CentOS搭建SVN伺服器,並通過Apache HTTP方式訪問(轉載至上品物語)
摘要:本文主要講述了在centos 6.5環境下搭建svn伺服器,可通過svn:\\IP方式訪問。同時由於部分公司內網埠限制,並不能訪問外網的svn伺服器,所以特地結合了apache伺服器,使得可以通過http方式http://IP方式訪問svn伺服器。 環境準備:
Linux(Red Hat6.5)下安裝svn伺服器,並通過http訪問
一、安裝 1、安裝svn,一般情況下選擇yum方式安裝比較簡單。 [[email protected] svn]# yum -y install mod_dav_svn #會自動安裝mod_dav_svn及其依賴包:mod_dav_svn-1.6.1
Android上傳檔案到Web伺服器,PHP接收檔案(一)
Android上傳檔案到伺服器,通常採用構造http協議的方法,模擬網頁POST方法傳輸檔案,伺服器端可以採用JavaServlet或者PHP來接收要傳輸的檔案。使用JavaServlet來接收檔案的方法比較常見,在這裡給大家介紹一個簡單的伺服器端使用PHP語言
mac下ssh連結遠端伺服器,並通過scp進行遠端複製,省的ftp了
今天,本地的專案,需要往伺服器上傳,很簡單的東西,但是我確實不會。。。 windows下,一般可使用ftp上傳 linux上習慣了 rz&sz,直接yum安裝lrzsz。但是,mac的iterm不知道為什麼,即便是安裝上了,網上也根據教程,該了什麼上傳模式,還是不對
iOS實現通過SSH2協議連結Linux伺服器,並執行相關指令
使用方法: SSHWrapper* sshWrapper = [[SSHWrapper alloc] init]; NSError* error; [sshWrapper connectToHost:@"0.0.0.0" port:22 user:@"r
通過手機登陸到自己電腦上的web伺服器,通過外網登陸到自己電腦上的網站
今天閒來無事,想通過自己的手機登入到自己電腦的伺服器。因此到網上去找了相關的知識。 1)通過電腦wifi連線連線web伺服器。 我在電腦上建了一個wifi用手機連線了這個wifi.在網路和共享中心找到了無線區域網ip地址:192.168.137.1。開啟web伺
基於httpd-2.2和httpd-2.4配置虛擬主機web站點,並提供https服務(一)
基於主機名的虛擬主機服務 使用httpd-2.2和httpd-2.4實現> 1.建立httpd服務,要求:> 1) 提供兩個基於名稱的虛擬主機www1, www2;要求每個虛擬主機都有單獨的錯誤日誌和訪問日誌; > 2) 通過www1的/server-status提供狀態信息,且僅允許172
基於httpd-2.2和httpd-2.4配置虛擬主機web站點,並提供https服務(二)
基於主機名配置虛擬主機web站點 使用httpd-2.2和httpd-2.4實現> 1.建立httpd服務,要求:> 1) 提供兩個基於名稱的虛擬主機www1, www2;要求每個虛擬主機都有單獨的錯誤日誌和訪問日誌; > 2) 通過www1的/server-status提供狀態信息,且僅允
基於httpd-2.4配置虛擬主機web站點,並提供https服務(二)
基於主機名配置虛擬主機web站點 為虛擬主機站點提供https服務 使用httpd-2.2和httpd-2.4實現> 1.建立httpd服務,要求:> 1) 提供兩個基於名稱的虛擬主機www1, www2;要求每個虛擬主機都有單獨的錯誤日誌和訪問日誌; > 2) 通過www1的/s
基於httpd-2.2配置虛擬主機web站點,並提供https服務(一)
基於主機名的虛擬主機配置 為虛擬主機提供https服務 使用httpd-2.2和httpd-2.4實現> 1.建立httpd服務,要求:> 1) 提供兩個基於名稱的虛擬主機www1, www2;要求每個虛擬主機都有單獨的錯誤日誌和訪問日誌; > 2) 通過www1的/server-
eNSP中的路由器通過遠程連接,並分析數據包
通過抓包分析路由器遠程連接1)先在華為模擬器上新建一個拓撲:2)分別在AR4和AR3上的GE 0/0/2上配置IP地址,並標識出對應的IP地址。配置IP的命令如下:system-view //進入系統視圖interface GigabitEthernet 0/0/2 //進入端口GE 0/0/2undo
Exchange2010清理不存在,已下線的exchange伺服器,並重建系統仲裁郵箱
現有Exchange2010環境中存在已經下線的exchange,由於當時的系統管理員操作有誤,直接將BJ站點中的exchange伺服器關機,並未按照標準操作來清除,所以導致現有環境中仍存在BJ站點中新建的資料庫/副本,BJDAG,BJ exchange伺服器等殘留資訊。同時發現,exchange環境中系統、
有10臺linux web伺服器,你該怎麼管理。你沒有上任交接工作,你該怎麼展開自己工作
假如你跳槽到一家公司,有10臺linux web伺服器,你該怎麼管理。你沒有上任交接工作,你該怎麼展開自己工作。 1. 搭建自己的監控伺服器zabbix 2. 找公司要賬號,密碼,ip 3. 檢視at和crontab記錄,建立自己備份機制 4. 遠端管理工具securiCRT或
Mac ssh連線遠端伺服器,並實現檔案的上傳和下載
使用scp命令實現上傳下載 1、從伺服器上下載檔案 scp [email protected]:/path/filename /Users/mac/Desktop(本地目錄) 例如:scp [email protected]:/root/test.txt /Users/mac/Desk
搭建主、從DNS伺服器,並實現智慧解析
1. 主、從DNS伺服器 主DNS伺服器:維護所負責解析的域的資料庫的伺服器;讀寫操作均可進行;主伺服器的資料會不斷髮生改變; 從DNS伺服器:從主DNS伺服器那裡或其它的從DNS伺服器那裡“複製”一份解析庫;但只能進行讀操作不能修改;從伺服器的資料庫要隨時同步主伺服器的資料; 2. 主、從
Android中呼叫攝像頭拍照儲存,並在相簿中選擇圖片顯示
我的配置是: android手機版本是7.0 android studio是3.1 android平臺是9.0 我的測試都是在真機上進行的。 首先來看程式碼: package com.example.sunshunli.cameraalbumtest; import a