@@ -37,6 +37,10 @@ public partial class WebManager : GameFrameworkModule, IWebManager
3737 // 超时时间(秒)
3838 private float m_Timeout = 5f ;
3939
40+ private readonly Dictionary < string , object > m_BaseForm = new Dictionary < string , object > ( 64 ) ;
41+ private readonly Dictionary < string , string > m_BaseHeader = new Dictionary < string , string > ( 64 ) ;
42+ private readonly Dictionary < string , string > m_BaseQueryString = new Dictionary < string , string > ( 64 ) ;
43+
4044 /// <summary>
4145 /// 构造函数
4246 /// </summary>
@@ -188,6 +192,8 @@ public Task<WebBufferResult> GetToBytes(string url, Dictionary<string, string> q
188192 public Task < WebStringResult > GetToString ( string url , Dictionary < string , string > queryString , Dictionary < string , string > header , object userData = null )
189193 {
190194 var uniTaskCompletionSource = new TaskCompletionSource < WebStringResult > ( ) ;
195+ queryString = MergeQueryString ( queryString ) ;
196+ header = MergeHeader ( header ) ;
191197 url = UrlHandler ( url , queryString ) ;
192198
193199 WebJsonData webJsonData = new WebJsonData ( url , header , true , uniTaskCompletionSource , userData ) ;
@@ -465,6 +471,8 @@ private async void MakeJsonBytesRequest(WebJsonData webJsonData)
465471 public Task < WebBufferResult > GetToBytes ( string url , Dictionary < string , string > queryString , Dictionary < string , string > header , object userData = null )
466472 {
467473 var uniTaskCompletionSource = new TaskCompletionSource < WebBufferResult > ( ) ;
474+ queryString = MergeQueryString ( queryString ) ;
475+ header = MergeHeader ( header ) ;
468476 url = UrlHandler ( url , queryString ) ;
469477
470478 WebJsonData webJsonData = new WebJsonData ( url , header , true , uniTaskCompletionSource , userData ) ;
@@ -539,6 +547,9 @@ public Task<WebBufferResult> PostToBytes(string url, Dictionary<string, object>
539547 public Task < WebStringResult > PostToString ( string url , Dictionary < string , object > from , Dictionary < string , string > queryString , Dictionary < string , string > header , object userData = null )
540548 {
541549 var uniTaskCompletionSource = new TaskCompletionSource < WebStringResult > ( ) ;
550+ from = MergeForm ( from ) ;
551+ queryString = MergeQueryString ( queryString ) ;
552+ header = MergeHeader ( header ) ;
542553 url = UrlHandler ( url , queryString ) ;
543554
544555 WebJsonData webJsonData = new WebJsonData ( url , header , from , uniTaskCompletionSource , userData ) ;
@@ -559,12 +570,188 @@ public Task<WebStringResult> PostToString(string url, Dictionary<string, object>
559570 public Task < WebBufferResult > PostToBytes ( string url , Dictionary < string , object > from , Dictionary < string , string > queryString , Dictionary < string , string > header , object userData = null )
560571 {
561572 var uniTaskCompletionSource = new TaskCompletionSource < WebBufferResult > ( ) ;
573+ from = MergeForm ( from ) ;
574+ queryString = MergeQueryString ( queryString ) ;
575+ header = MergeHeader ( header ) ;
562576 url = UrlHandler ( url , queryString ) ;
563577 WebJsonData webJsonData = new WebJsonData ( url , header , from , uniTaskCompletionSource , userData ) ;
564578 m_WaitingNormalQueue . Enqueue ( webJsonData ) ;
565579 return uniTaskCompletionSource . Task ;
566580 }
567581
582+ #region Base Data Management
583+
584+ /// <summary>
585+ /// 添加基础表单数据
586+ /// </summary>
587+ /// <param name="key">表单键</param>
588+ /// <param name="value">表单值</param>
589+ public void AddBaseForm ( string key , object value )
590+ {
591+ m_BaseForm [ key ] = value ;
592+ }
593+
594+ /// <summary>
595+ /// 移除基础表单数据
596+ /// </summary>
597+ /// <param name="key">表单键</param>
598+ public void RemoveBaseForm ( string key )
599+ {
600+ if ( m_BaseForm . ContainsKey ( key ) )
601+ {
602+ m_BaseForm . Remove ( key ) ;
603+ }
604+ }
605+
606+ /// <summary>
607+ /// 清空基础表单数据
608+ /// </summary>
609+ public void ClearBaseForm ( )
610+ {
611+ m_BaseForm . Clear ( ) ;
612+ }
613+
614+ /// <summary>
615+ /// 添加基础请求头数据
616+ /// </summary>
617+ /// <param name="key">请求头键</param>
618+ /// <param name="value">请求头值</param>
619+ public void AddBaseHeader ( string key , string value )
620+ {
621+ m_BaseHeader [ key ] = value ;
622+ }
623+
624+ /// <summary>
625+ /// 移除基础请求头数据
626+ /// </summary>
627+ /// <param name="key">请求头键</param>
628+ public void RemoveBaseHeader ( string key )
629+ {
630+ if ( m_BaseHeader . ContainsKey ( key ) )
631+ {
632+ m_BaseHeader . Remove ( key ) ;
633+ }
634+ }
635+
636+ /// <summary>
637+ /// 清空基础请求头数据
638+ /// </summary>
639+ public void ClearBaseHeader ( )
640+ {
641+ m_BaseHeader . Clear ( ) ;
642+ }
643+
644+ /// <summary>
645+ /// 添加基础查询参数数据
646+ /// </summary>
647+ /// <param name="key">查询参数键</param>
648+ /// <param name="value">查询参数值</param>
649+ public void AddBaseQueryString ( string key , string value )
650+ {
651+ m_BaseQueryString [ key ] = value ;
652+ }
653+
654+ /// <summary>
655+ /// 移除基础查询参数数据
656+ /// </summary>
657+ /// <param name="key">查询参数键</param>
658+ public void RemoveBaseQueryString ( string key )
659+ {
660+ if ( m_BaseQueryString . ContainsKey ( key ) )
661+ {
662+ m_BaseQueryString . Remove ( key ) ;
663+ }
664+ }
665+
666+ /// <summary>
667+ /// 清空基础查询参数数据
668+ /// </summary>
669+ public void ClearBaseQueryString ( )
670+ {
671+ m_BaseQueryString . Clear ( ) ;
672+ }
673+
674+ #endregion
675+
676+ #region Data Merging
677+
678+ /// <summary>
679+ /// 合并表单数据
680+ /// </summary>
681+ /// <param name="form">本次请求的表单数据</param>
682+ /// <returns>合并后的表单数据</returns>
683+ private Dictionary < string , object > MergeForm ( Dictionary < string , object > form )
684+ {
685+ if ( m_BaseForm . Count == 0 )
686+ {
687+ return form ;
688+ }
689+
690+ // 复制基础数据
691+ var result = new Dictionary < string , object > ( m_BaseForm ) ;
692+
693+ // 覆盖/添加外部数据
694+ if ( form != null )
695+ {
696+ foreach ( var kv in form )
697+ {
698+ result [ kv . Key ] = kv . Value ;
699+ }
700+ }
701+
702+ return result ;
703+ }
704+
705+ /// <summary>
706+ /// 合并请求头数据
707+ /// </summary>
708+ /// <param name="header">本次请求的请求头数据</param>
709+ /// <returns>合并后的请求头数据</returns>
710+ private Dictionary < string , string > MergeHeader ( Dictionary < string , string > header )
711+ {
712+ if ( m_BaseHeader . Count == 0 )
713+ {
714+ return header ;
715+ }
716+
717+ var result = new Dictionary < string , string > ( m_BaseHeader ) ;
718+ if ( header != null )
719+ {
720+ foreach ( var kv in header )
721+ {
722+ result [ kv . Key ] = kv . Value ;
723+ }
724+ }
725+
726+ return result ;
727+ }
728+
729+ /// <summary>
730+ /// 合并查询参数数据
731+ /// </summary>
732+ /// <param name="queryString">本次请求的查询参数数据</param>
733+ /// <returns>合并后的查询参数数据</returns>
734+ private Dictionary < string , string > MergeQueryString ( Dictionary < string , string > queryString )
735+ {
736+ if ( m_BaseQueryString . Count == 0 )
737+ {
738+ return queryString ;
739+ }
740+
741+ var result = new Dictionary < string , string > ( m_BaseQueryString ) ;
742+ if ( queryString != null )
743+ {
744+ foreach ( var kv in queryString )
745+ {
746+ result [ kv . Key ] = kv . Value ;
747+ }
748+ }
749+
750+ return result ;
751+ }
752+
753+ #endregion
754+
568755 /// <summary>
569756 /// URL 标准化
570757 /// </summary>
0 commit comments