1、JAVA請問如果我的項目部署在tomcat中,用戶只要有正確的http地址就能訪問我伺服器上的資源,
這當然算遠程調用。 webService,CXF,Hessian都有自己的協議規范,並且封裝了很多錯誤判斷。
你這個算是自定義規范,開發容易,但是容易有隱患,不容易擴展。
2、如何用Java實現Web伺服器
如何用Java實現Web伺服器 一、HTTP協議的作用原理
WWW是以Internet作為傳輸媒介的一個應用系統,WWW網上最基本的傳輸單位是Web網頁。WWW的工作基於客戶機/伺服器計算模型,由Web 瀏覽器(客戶機)和Web伺服器(伺服器)構成,兩者之間採用超文本傳送協議(HTTP)進行通信。HTTP協議是基於TCP/IP協議之上的協議,是Web瀏覽器和Web伺服器之間的應用層協議,是通用的、無狀態的、面向對象的協議。HTTP協議的作用原理包括四個步驟:
(1) 連接:Web瀏覽器與Web伺服器建立連接,打開一個稱為socket(套接字)的虛擬文件,此文件的建立標志著連接建立成功。
(2) 請求:Web瀏覽器通過socket向Web伺服器提交請求。HTTP的請求一般是GET或POST命令(POST用於FORM參數的傳遞)。GET命令的格式為:
GET 路徑/文件名 HTTP/1.0
文件名指出所訪問的文件,HTTP/1.0指出Web瀏覽器使用的HTTP版本。
(3) 應答:Web瀏覽器提交請求後,通過HTTP協議傳送給Web伺服器。Web伺服器接到後,進行事務處理,處理結果又通過HTTP傳回給Web瀏覽器,從而在Web瀏覽器上顯示出所請求的頁面。
3、JAVA中如何設置代理伺服器,取消代理伺服器
在JAVA中怎麼設置代理伺服器呢,非常簡單
public void setServiceProxy(Config config) {
this.config = config;
System.setProperty("http.proxyHost", config.getProxyHost());
System.setProperty("http.proxyPort", config.getProxyPort());
System.setProperty("https.proxyHost", config.getProxyHost());
System.setProperty("https.proxyPort", config.getProxyPort());
}
然後在每一個HttpUrlConnection請求中,設置代理伺服器用戶名和密碼,並進行Base64加密(看你代理伺服器的要求,可能因代理伺服器不同而不同),代碼如下
private HttpURLConnection getProxyHttpConnection() throws IOException {
String authorization = config.getProxyUser() + ":"
+ config.getProxyPassword();
URL url = new URL(config.getRequestUrl());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Proxy-Authorization",
"Basic " + Base64.encodeBase64String(authorization.getBytes()));
return conn;
}
4、java 服務端怎麼接收http請求
用servlet接受http的get和post請求
寫servlet的doGet和doPost方法即可
web.xml配置好servlet
5、java中HttpGet和HttpClient和HttpResponse之間的聯系是如何的 每一個
使用HttpClient發送請求、接收響應時,需要HttpGet,HttpResponse。步驟如下
1. 創建對象。
2. 創建請求方法的實例,並指定請求URL。如果需要發送GET請求,創建HttpGet對象;如果需要發送POST請求,創建HttpPost對象。
3. 如果需要發送請求參數,可調用HttpGet、HttpPost共同的
setParams(HetpParams
params)方法來添加請求參數;對於HttpPost對象而言,也可調用setEntity(HttpEntity
entity)方法來設置請求參數。
4. 調用HttpClient對象的execute(HttpUriRequest request)發送請求,該方法返回一個HttpResponse。
5. 調用HttpResponse的getAllHeaders()、
getHeaders(String
name)等方法可獲取伺服器的響應頭;調用HttpResponse的getEntity()方法可獲取HttpEntity對象,該對象包裝了伺服器
的響應內容。程序可通過該對象獲取伺服器的響應內容。
6. 釋放連接。無論執行方法是否成功,都必須釋放連接
6、java 開發一個http的代理伺服器
說實話,你的問題很那個。。
不過應該也能實現。
現在問題主要是由於b不能訪問c,所以c只能使用TimerTask定時去訪問b。
b有2個listener,一個負責偵聽來自a的請求,一個負責偵聽來自b的。
b中應該會使用到多線程。
下面定義a的Request為x,c的Request為y
由於b會有多個來自a轉發的請求,可能會有x1\x2\x3等很多並發的請求,所以b在初始化的時候就需要建立一個等待池.
等待池應該是單例且線程同步的,x一來就new object(request,response),然後放入list。
c的定時器一到,就訪問b開放給c的listener,request y。y首先遍歷等待池,取出x的request,然後用取出x的response的返回給a。直到等待池為空為止,然後y response給c。
不過要注意的是
1)你會發現,由於c給b的數據應該是放到request y裡面作為參數來傳的。
2)a的請求如果需要c不同數據介面的數據,那c-->b的request y里就應該包含所有的數據,然後在遍歷等待池的時候根據a-->b的request x的id(可以使用sessionid)來區分取哪個。
3)最差的情況,
1,a源源不斷的發出x請求,c的request遍歷就死循環。
2,如果c的定時時間太短,y1還沒完,y2就來了。
3,a源源不斷的發出x請求,但是某一請求Xn就無法搶到資源,Xn就掛掉。
這裡面很多處理你還要多加控制。
這個想法沒實驗過,其實如果b可以訪問c,其實什麼問題都沒有了
最後問一句,誰給你這樣的需求的?打他
7、java HTTP代理伺服器開發 求助帖
說實話,你的問題很那個。。
不過應該也能實現。
現在問題主要是由於b不能訪問c,所以c只能使用TimerTask定時去訪問b。
b有2個listener,一個負責偵聽來自a的請求,一個負責偵聽來自b的。
b中應該會使用到多線程。
下面定義a的Request為x,c的Request為y
由於b會有多個來自a轉發的請求,可能會有x1\x2\x3等很多並發的請求,所以b在初始化的時候就需要建立一個等待池.
等待池應該是單例且線程同步的,x一來就new object(request,response),然後放入list。
c的定時器一到,就訪問b開放給c的listener,request y。y首先遍歷等待池,取出x的request,然後用取出x的response的返回給a。直到等待池為空為止,然後y response給c。
不過要注意的是
1)你會發現,由於c給b的數據應該是放到request y裡面作為參數來傳的。
2)a的請求如果需要c不同數據介面的數據,那c-->b的request y里就應該包含所有的數據,然後在遍歷等待池的時候根據a-->b的request x的id(可以使用sessionid)來區分取哪個。
3)最差的情況,
1,a源源不斷的發出x請求,c的request遍歷就死循環。
2,如果c的定時時間太短,y1還沒完,y2就來了。
3,a源源不斷的發出x請求,但是某一請求Xn就無法搶到資源,Xn就掛掉。
這裡面很多處理你還要多加控制。
這個想法沒實驗過,其實如果b可以訪問c,其實什麼問題都沒有了
最後問一句,誰給你這樣的需求的?打他
8、JAVA代碼發送HTTP請求問題(我想實現和伺服器進行一次連接時發送兩次請求)
我覺得你這個問題的解決應該是你的程序做一次這個網站的登陸,而且這個登陸的版動作應該是需要權發生在你這段代碼以前,因為你這段代碼的動作其實只是訪問了一下那個網站,但是沒有任何的用戶或者是其他的信息。
一般來說你登陸以後,你會獲得一個token,用那個token就可以讓網站認為你已經登陸,然後改密碼什麼就好辦了。建議你先抓一下IE的包看看是人家的通信是怎麼樣的,然後用java做就好了。或者是那個網站有開發者文檔就最好了。
9、java怎麼實現http伺服器怎麼解決
參數:url:目標地址data:要post的數據比如a=1&b=2publicstringGetPostString(stringurl,stringdata){try{byte[]postBytes=Encoding.GetEncoding("utf-8").GetBytes(data);HttpWebRequestmyRequest=(HttpWebRequest)WebRequest.Create(url);myRequest.Method="POST";myRequest.ContentType="text/html";myRequest.ContentLength=postBytes.Length;myRequest.Proxy=null;StreamnewStream=myRequest.GetRequestStream();newStream.Write(postBytes,0,postBytes.Length);newStream.Close();//=(HttpWebResponse)myRequest.GetResponse();using(StreamReaderreader=newStreamReader(myResponse.GetResponseStream(),Encoding.GetEncoding("utf-8"))){stringcontent=reader.ReadToEnd();returncontent;}}catch(System.Exceptionex){returnex.Message;}}
10、怎樣用JAVA實現模擬HTTP請求,得到伺服器的響應時間等參數
其實你有思路了啊。問題簡化一下:對一個ip,一個線程請求100次。該次請求的響內應時間容為調用httpClient前的響應時間減去接收到httpClient響應的時間。注意,本次請求是否有效要判斷。平均響應時間和最大響應時間只不過是響應時間的統計而已,可以用資料庫來做。就是說資料庫記錄每次測試請求的響應時間,成功與否。統計數據最後出來。只所以用多線程,是因為單線程順序請求100次,不能模擬伺服器真正的情況。