2020年10月19日 星期一

SoupSession是控制客戶端HTTP的對象。 SoupSession封裝了libsoup代表程序保留的所有狀態;緩存的HTTP連接,身份驗證信息等。它還跟踪您正在使用的各種全局選項和功能。


大多數應用程序只需要一個SoupSession。您可能需要多個會話的主要原因是,如果您需要具有多個獨立的身份驗證上下文。 (例如,您要連接到服務器並在不同時間以兩個不同的用戶身份進行身份驗證;確保向每個SoupMessage發送所需的身份驗證信息的最簡單方法是為第一個用戶使用一個會話,為第一個用戶使用第二個會話其他用戶。)


過去,SoupSession是一個抽像類,用戶需要在SoupSessionAsync(始終使用基於GMainLoop的I / O)或SoupSessionSync(始終使用阻塞的I / O,並且可以同時在多個線程中使用)之間進行選擇。這不再是必需的。您可以(並且應該)使用簡單的SoupSession,它支持同步和異步使用。 (當使用普通的SoupSession時,soup_session_queue_message()的行為與傳統上在SoupSessionAsync上的行為相同,而soup_session_send_message()的行為與傳統上在SoupSessionSync上的行為類似。)


SoupSessionFeature對象提供了附加的SoupSession功能,可以將其添加到帶有soup_session_add_feature()或soup_session_add_feature_by_type()的會話中(或在構造時使用SOUP_SESSION_ADD_FEATURE_BY_TYPE偽屬性)。例如,SoupLogger提供對HTTP流量記錄的支持,SoupContentDecoder提供對壓縮響應處理的支持,而SoupContentSniffer提供對HTML5樣式的響應主體內容嗅探的支持。此外,可以將SoupAuth和SoupRequest的子類型添加為功能,以增加對其他身份驗證和URI類型的支持。


所有SoupSession都是使用SoupAuthManager創建的,並且支持SOUP_TYPE_AUTH_BASIC和SOUP_TYPE_AUTH_DIGEST。對於SoupRequest類型,支持SoupRequestHTTP,SoupRequestFile和SoupRequestData。此外,默認情況下,使用純SoupSession類(而不是其不贊成使用的子類型之一)的會話具有SoupContentDecoder。


Reference

SoupSession

沒有留言:

張貼留言