如果我創建一個HTTP java.net.URL
,然後調用openConnection()
,它是否意味着會發生一個HTTP帖子?我知道openStream()
意味着一個GET。如果是這樣,您如何執行其他HTTP動詞之一,而無需使用原始套接字層?新的URL(...)。openConnection()是否意味着POST?
10
A
回答
16
如果使用openConnection()
檢索URLConnection
對象,它實際上並未開始與服務器通信。直到你從URLConnection()
得到流,這纔會發生。當您第一次獲得連接時,您可以在實際打開連接之前添加/更改標題和其他連接屬性。
URLConnection的生命週期有點奇怪。它不會將頭部發送到服務器,直到您獲得其中一個流。如果你只是得到輸入流,那麼我相信它會做GET,發送頭文件,然後讓你讀取輸出。如果你得到了輸出流,那麼我相信它將它作爲POST發送,因爲它假定你將向它寫入數據(你可能需要調用setDoOutput(true)
使輸出流工作)。一旦你得到輸入流,輸出流就關閉,並等待服務器的響應。
例如,這應該做一個POST:
URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(true);
conn.setDoInput(true);
OutputStream os = conn.getOutputStream();
os.write("Hi there!");
os.close();
InputStream is = conn.getInputStream();
// read stuff here
雖然這會做一個GET:
URL myURL = new URL("http://example.com/my/path");
URLConnection conn = myURL.openConnection();
conn.setDoOutput(false);
conn.setDoInput(true);
InputStream is = conn.getInputStream();
// read stuff here
URLConnection
還會做其他奇怪的事情。如果服務器指定了內容長度,那麼URLConnection
將保持底層輸入流處於打開狀態,直到它收到那麼多的數據,即使您明確關閉它。這給我們帶來了很多問題,因爲它會讓我們的客戶端變得更加困難,因爲URLConnection
會使網絡連接保持打開狀態。這可能可能存在,即使你只是使用getStream()
。
3
不,它不。但是如果URL的協議是HTTP,那麼您將得到一個HttpURLConnection
作爲返回對象。該類使用setRequestMethod
方法來指定要使用的HTTP方法。
如果你想做更復雜的東西,你可能最好使用像Jakarta HttpClient這樣的庫。
相關問題
- 1. '!'是否意味着perl?
- 2. $是什麼?是否意味着在Ruby?
- 3. 是什麼;是否意味着在Ruby?
- 4. ILOnly = 0是否意味着C++/CLI?
- 5. << - 是否意味着紅寶石?
- 6. 這是否意味着數據步驟?
- 7. 「僅限邀請」是否意味着beta?
- 8. @OneToOne是否意味着唯一性?
- 9. 正斜槓(/)是否意味着目錄?
- 10. ASP.NET是否意味着ASP.NET WebForms?
- 11. %是什麼〜DP0意味着
- 12. 這是&意味着什麼?
- 13. %,這意味着
- 14. 更多的意見是否意味着ViewGroup的性能更差?
- 15. 的Java + =意味着
- 16. 這個SOAP Fault是否意味着我認爲的意思?
- 17. 新的調試密鑰庫是否意味着新的Map API密鑰?
- 18. 聲明意味着
- 19. 差異意味着
- 20. 如果A == B,這是否意味着[A isEqual:B]是真的?
- 21. 什麼是的StatusCode意味着「0」
- 22. 是什麼語境意味着Android的
- 23. 是什麼?在Android的XML意味着
- 24. 在AngularJS中結尾意味着什麼double意味着
- 25. 計算意味着處理NaN意味着
- 26. SoundCloiud API中的「公共」過濾器意味着什麼,它是否意味着「可流式傳輸」?
- 27. ADO.NET實體框架中的持久性無知是否意味着我認爲這意味着什麼?
- 28. 的ViewController = _ViewController意味着
- 29. typedef的變化意味着
- 30. 什麼?意味着iOS的