兩種訪問介面的方式(get和post)
跨機器、跨語言的遠端訪問形式一共有三種:scoket傳送資料包、http傳送請求、rmi遠端連線;
http傳送請求方式;分為post和get兩種方式
importjava.io.IOException; importjava.io.InputStream; import java.util.Map; importjava.util.concurrent.atomic.AtomicInteger; importorg.apache.commons.httpclient.HttpClient; importorg.apache.commons.httpclient.HttpException; importorg.apache.commons.httpclient.HttpStatus; importorg.apache.commons.httpclient.MultiThreadedHttpConnectionManager; importorg.apache.commons.httpclient.NameValuePair; importorg.apache.commons.httpclient.methods.GetMethod; importorg.apache.commons.httpclient.methods.PostMethod; importorg.apache.commons.httpclient.params.HttpConnectionManagerParams; importorg.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; publicclass SendHttpUrl { privatefinalstatic Logger logger = LoggerFactory.getLogger(SendHttpUrl.class); privatestatic HttpClient httpClient = null; privatestaticMultiThreadedHttpConnectionManager connectionManager = null;// 多執行緒管理器 privateintmaxThreadsTotal = 128;// 最大執行緒數 privateintmaxThreadsPerHost = 32; // 分配給每個客戶端的最大執行緒數 privateintconnectionTimeout = 15000;// 連線超時時間,毫秒 privateintsoTimeout = 14000;// 讀取資料超時時間,毫秒 publicvoid init() { connectionManager = newMultiThreadedHttpConnectionManager(); HttpConnectionManagerParams params = newHttpConnectionManagerParams(); params.setConnectionTimeout(connectionTimeout); params.setMaxTotalConnections(maxThreadsTotal); params.setSoTimeout(soTimeout); if (maxThreadsTotal > maxThreadsPerHost) { params.setDefaultMaxConnectionsPerHost(maxThreadsPerHost); } else { params.setDefaultMaxConnectionsPerHost(maxThreadsTotal); } connectionManager.setParams(params); httpClient = new HttpClient(connectionManager); httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(connectionTimeout); httpClient.getHttpConnectionManager().getParams().setSoTimeout(soTimeout); } /** * get方式訪問 * * @param url * @param callType * @param parmMap * @return */ private String callByGet(Stringurl, String callType, Map<String, String> parmMap) { if (logger.isDebugEnabled()){ logger.debug("in get,url:" + url); } GetMethod getMethod = new GetMethod(url); int statusCode = 0; try { statusCode = httpClient.executeMethod(getMethod); if (logger.isDebugEnabled()){ logger.debug("inget,statusCode:" + statusCode); } if (statusCode != HttpStatus.SC_OK) { // 訪問失敗 logger.error("in get,訪問appagent失敗。網路問題。statusCode:" + statusCode); returnnull; } InputStream inputStream = getMethod.getResponseBodyAsStream(); if (inputStream == null) { // 訪問正常:獲取到的資料為空 logger.error("in get,從appagent返回的資料為空!"); returnnull; } String rtn = IOUtils.toString(inputStream, "utf-8"); return rtn; } catch (HttpException e) { logger.error("get方式訪問appagent失敗!", e); returnnull; } catch (IOException e) { logger.error("get方式訪問appagent失敗!", e); returnnull; } finally { getMethod.releaseConnection(); } } /** * post方式訪問 * * @param url * @param callType * @param parmMap * @return */ private String callByPost(Stringurl, String callType, Map<String, String> parmMap) { if (logger.isDebugEnabled()){ logger.debug("inpost,url:" + url); } PostMethod p = new PostMethod(url); if (parmMap != null) { NameValuePair[] params = newNameValuePair[parmMap.size()]; AtomicInteger atomicInteger = new AtomicInteger(0); for (Map.Entry<String, String> parm :parmMap.entrySet()) { NameValuePair parmValue = newNameValuePair(parm.getKey(), parm.getValue()); params[atomicInteger.getAndIncrement()] = parmValue; } p.setRequestBody(params); } try { int statusCode = httpClient.executeMethod(p); logger.debug("inget,statusCode:" + statusCode); if (statusCode != HttpStatus.SC_OK) { // 異常 logger.error("in post,訪問appagent失敗。網路問題。statusCode:" + statusCode); returnnull; } InputStream inputStream = p.getResponseBodyAsStream(); if (inputStream == null) { // 訪問正常 logger.error("in post,從appagent返回的資料為空!"); returnnull; } String rtn = IOUtils.toString(inputStream, "utf-8"); return rtn; } catch (HttpException e) { logger.error("post方式訪問appagent失敗!", e); returnnull; } catch (IOException e) { logger.error("post方式訪問appagent失敗!", e); returnnull; } finally { p.releaseConnection(); } } }
相關推薦
兩種訪問介面的方式(get和post)
跨機器、跨語言的遠端訪問形式一共有三種:scoket傳送資料包、http傳送請求、rmi遠端連線; http傳送請求方式;分為post和get兩種方式 importjava.io.IOException; importjava.io.InputStream; im
提交方式get和post有什麼區別
提交方式post和get有什麼區別? (1)post是向伺服器傳送資料;get是從伺服器上獲取資料。 (2)在客戶端,get是把引數資料佇列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。 post是通過HTTP post機制,將表單內各個欄
HTTP請求方式GET和POST的區別詳解
HTTP有兩部分組成:請求與響應,下面分別整理。 一.HTTP請求 1.HTTP請求格式: <request line> <headers> <blank line> [<request-body>] 在HTTP請
HTTP與伺服器互動的方式get和post的區別
1.http四種互動方式: get和post是HTTP與伺服器互動的方式, 說到方式,其實總共有四種:put,delete,post,get。 他們的作用分別是對伺服器資源的增,刪,改,查。 所以,get是獲取資料,post是修改資料。 2.
HTTP 請求方式: GET和POST的比較
什麼是HTTP? 超文字傳輸協議(HyperText Transfer Protocol -- HTTP)是一個設計來使客戶端和伺服器順利進行通訊的協議。 HTTP在客戶端和伺服器之間以request-response protocol(請求-回覆協議)工作。 GET
HTML form 表單提交方式get和post的區別
method屬性規定如何傳送表單的資料。有兩種提交的方法分別為get和post。 1、get:提交的資料量要小於1024位元組,表單提交時表單域數值(表單請求的資訊:賬號、密碼…)將在位址列顯示。
關於HTTP 請求方式: GET和POST的比較的本質
一,一般現在流傳的HTTP請求:GET和POST的比較是這樣的: GET和POST是HTTP的兩個常用方法。 什麼是HTTP? 超文字傳輸協議(HyperText Transfer Protocol -- HTTP)是一個設計來使客戶端和伺服器順利進行通訊的協議。 HT
瀏覽器和伺服器互動方式GET和POST的區別
前言 做Web開發就一定會涉及到瀏覽器和伺服器的互動,所以瞭解瀏覽器和伺服器互動的方式就尤為重要。從接觸B/S開始就已經接觸到了get和post,但是對它們的瞭解確實不深入。在後來不斷的做專
Android 進階6:兩種序列化方式 Serializable 和 Parcelable
什麼是序列化 我們總是說著或者聽說著“序列化”,它的定義是什麼呢? 序列化 (Serialization)將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。在序列化期間,物件將其當前狀態寫入到臨時或永續性儲存區。以後,可以通過從儲存區中讀取或反序列化物
keras 兩種訓練模型方式fit和fit_generator(節省記憶體)
第一種,fit import keras from keras.models import Sequential from keras.layers import Dense import numpy as np from sklearn.preproce
Map的兩種取值方式keySet和entrySet
Map與Collection在集合框架中屬並列存在、 Map是一次新增一對元素(儲存的是夫妻,哈哈)。Collection是一次新增一個元素(儲存的是一個單體)。 Map儲存的是鍵值對。 Map儲存元素使用put方法, Collection
form表單中get和post兩種提交方式的區別
name bsp inpu get div post input 普通 表單 一、form表單中get和post兩種提交方式的區別? 1.get提交表單中的內容在鏈接處是可見的。post不可見 2.post相比於get是安全的 3.post不收限制大小,get有
斑馬打印機客戶端GET和POST,以及後端兩種打印方式。
syn box orm sub make sys jquery 1.2 ace 斑馬打印機客戶端GET和POST,以及後端兩種打印方式。 背景環境:打印機安裝在客戶端外網。當用戶登錄時,通過ajax取服務器數據,返回打印機命令,然後客戶端通過JS發送給斑馬打印機。 1、使用
Http兩種請求方式:Get 和Post的區別
什麼是HTTP? 超文字傳輸協議(HyperText Transfer Protocol – HTTP)是一個設計來使客戶端和伺服器順利進行通訊的協議。 HTTP在客戶端和伺服器之間以request-response protocol(請求-回覆協議)工作。 get:從指定的伺服器中獲取
HttpClient傳送請求,get和post兩種方式,分別帶引數和不帶引數
(一)、匯入HttpCLient的jar包 <dependencies> <dependency> <groupId>org.apache.httpcomponents</groupId> <arti
ajax與伺服器傳值有兩種方式:get 和post的區別
get是把引數資料佇列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。get可以使用瀏覽器的快取機制,別
get和post兩種表單提交方式的區別
角色 編碼方式 不同 面試官 qpi 但是 優化 method log 今天看到一篇博客談論get和post區別,簡單總結一下https://www.cnblogs.com/logsharing/p/8448446.html 要說兩者的區別,接觸過web開發的人基本上都能說
GET和POST兩種基本請求方法的區別
完整性 總結 優化 返回 們的 傳遞參數 src 本質 大成 GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。 最直觀的區別就是GET把參數包含在URL中,POST通過request body傳遞參數。 你可能自己寫過
GET和POST兩種請求方法的區別(RFC翻譯)
GET和POST方法是HTTP協議規定的。查了HTTP1.1的RFC,原文的專業性極強。下面是白話翻譯,歡迎補充和指錯。 GET方法就是檢索(以實體的形式)由請求uri所指定的資源。如果請求的uri指向資料產生的過程,應該把產生的資料應作為實體在響應中返回而不是源文字,除非原始檔指向輸出過
HTTP請求協議中GET和POST兩種基本請求方法的區別
GET在瀏覽器回退時是無害的,而POST會再次提交請求。 GET產生的URL地址可以被Bookmark,而POST不可以。 GET請求會被瀏覽器主動cache,而POST不會,除非手動設定。 GET請求只能進行url編碼