5
5
using System . Collections . Generic ;
6
6
using System . IO ;
7
7
using System . Net ;
8
+ using System . Text ;
8
9
using System . Threading . Tasks ;
9
10
10
11
namespace ServiceStack
@@ -13,6 +14,8 @@ public static class HttpUtils
13
14
{
14
15
public static string UserAgent = "ServiceStack.Text" ;
15
16
17
+ public static Encoding UseEncoding { get ; set ; } = Encoding . UTF8 ;
18
+
16
19
[ ThreadStatic ]
17
20
public static IHttpResultsFilter ResultsFilter ;
18
21
@@ -512,15 +515,15 @@ public static string SendStringToUrl(this string url, string method = null,
512
515
if ( requestBody != null )
513
516
{
514
517
using ( var reqStream = PclExport . Instance . GetRequestStream ( webReq ) )
515
- using ( var writer = new StreamWriter ( reqStream ) )
518
+ using ( var writer = new StreamWriter ( reqStream , UseEncoding ) )
516
519
{
517
520
writer . Write ( requestBody ) ;
518
521
}
519
522
}
520
523
521
524
using ( var webRes = PclExport . Instance . GetResponse ( webReq ) )
522
525
using ( var stream = webRes . GetResponseStream ( ) )
523
- using ( var reader = new StreamReader ( stream ) )
526
+ using ( var reader = new StreamReader ( stream , UseEncoding ) )
524
527
{
525
528
responseFilter ? . Invoke ( ( HttpWebResponse ) webRes ) ;
526
529
@@ -554,7 +557,7 @@ public static Task<string> SendStringToUrlAsync(this string url, string method =
554
557
if ( requestBody != null )
555
558
{
556
559
using ( var reqStream = PclExport . Instance . GetRequestStream ( webReq ) )
557
- using ( var writer = new StreamWriter ( reqStream ) )
560
+ using ( var writer = new StreamWriter ( reqStream , UseEncoding ) )
558
561
{
559
562
writer . Write ( requestBody ) ;
560
563
}
@@ -580,7 +583,7 @@ public static Task<string> SendStringToUrlAsync(this string url, string method =
580
583
responseFilter ? . Invoke ( ( HttpWebResponse ) webRes ) ;
581
584
582
585
using ( var stream = webRes . GetResponseStream ( ) )
583
- using ( var reader = new StreamReader ( stream ) )
586
+ using ( var reader = new StreamReader ( stream , UseEncoding ) )
584
587
{
585
588
tcs . SetResult ( reader . ReadToEnd ( ) ) ;
586
589
}
@@ -647,10 +650,7 @@ public static byte[] SendBytesToUrl(this string url, string method = null,
647
650
webReq . Accept = accept ;
648
651
PclExport . Instance . AddCompression ( webReq ) ;
649
652
650
- if ( requestFilter != null )
651
- {
652
- requestFilter ( webReq ) ;
653
- }
653
+ requestFilter ? . Invoke ( webReq ) ;
654
654
655
655
if ( ResultsFilter != null )
656
656
{
@@ -667,8 +667,7 @@ public static byte[] SendBytesToUrl(this string url, string method = null,
667
667
668
668
using ( var webRes = PclExport . Instance . GetResponse ( webReq ) )
669
669
{
670
- if ( responseFilter != null )
671
- responseFilter ( ( HttpWebResponse ) webRes ) ;
670
+ responseFilter ? . Invoke ( ( HttpWebResponse ) webRes ) ;
672
671
673
672
using ( var stream = webRes . GetResponseStream ( ) )
674
673
{
@@ -690,10 +689,7 @@ public static Task<byte[]> SendBytesToUrlAsync(this string url, string method =
690
689
webReq . Accept = accept ;
691
690
PclExport . Instance . AddCompression ( webReq ) ;
692
691
693
- if ( requestFilter != null )
694
- {
695
- requestFilter ( webReq ) ;
696
- }
692
+ requestFilter ? . Invoke ( webReq ) ;
697
693
698
694
if ( ResultsFilter != null )
699
695
{
@@ -728,10 +724,7 @@ public static Task<byte[]> SendBytesToUrlAsync(this string url, string method =
728
724
}
729
725
730
726
var webRes = task . Result ;
731
- if ( responseFilter != null )
732
- {
733
- responseFilter ( ( HttpWebResponse ) webRes ) ;
734
- }
727
+ responseFilter ? . Invoke ( ( HttpWebResponse ) webRes ) ;
735
728
736
729
using ( var stream = webRes . GetResponseStream ( ) )
737
730
{
@@ -798,7 +791,7 @@ public static bool IsInternalServerError(this Exception ex)
798
791
using ( var webRes = PclExport . Instance . GetResponse ( webReq ) )
799
792
{
800
793
var httpRes = webRes as HttpWebResponse ;
801
- return httpRes != null ? httpRes . StatusCode : ( HttpStatusCode ? ) null ;
794
+ return httpRes ? . StatusCode ;
802
795
}
803
796
}
804
797
catch ( Exception ex )
@@ -825,12 +818,8 @@ public static bool IsInternalServerError(this Exception ex)
825
818
826
819
public static HttpStatusCode ? GetStatus ( this WebException webEx )
827
820
{
828
- if ( webEx == null ) return null ;
829
- var httpRes = webEx . Response as HttpWebResponse ;
830
- if ( httpRes != null )
831
- return httpRes . StatusCode ;
832
-
833
- return null ;
821
+ var httpRes = webEx ? . Response as HttpWebResponse ;
822
+ return httpRes ? . StatusCode ;
834
823
}
835
824
836
825
public static bool HasStatus ( this Exception ex , HttpStatusCode statusCode )
@@ -847,8 +836,8 @@ public static string GetResponseBody(this Exception ex)
847
836
#endif
848
837
) return null ;
849
838
850
- var errorResponse = ( ( HttpWebResponse ) webEx . Response ) ;
851
- using ( var reader = new StreamReader ( errorResponse . GetResponseStream ( ) ) )
839
+ var errorResponse = ( HttpWebResponse ) webEx . Response ;
840
+ using ( var reader = new StreamReader ( errorResponse . GetResponseStream ( ) , UseEncoding ) )
852
841
{
853
842
return reader . ReadToEnd ( ) ;
854
843
}
@@ -857,7 +846,7 @@ public static string GetResponseBody(this Exception ex)
857
846
public static string ReadToEnd ( this WebResponse webRes )
858
847
{
859
848
using ( var stream = webRes . GetResponseStream ( ) )
860
- using ( var reader = new StreamReader ( stream ) )
849
+ using ( var reader = new StreamReader ( stream , UseEncoding ) )
861
850
{
862
851
return reader . ReadToEnd ( ) ;
863
852
}
@@ -866,7 +855,7 @@ public static string ReadToEnd(this WebResponse webRes)
866
855
public static IEnumerable < string > ReadLines ( this WebResponse webRes )
867
856
{
868
857
using ( var stream = webRes . GetResponseStream ( ) )
869
- using ( var reader = new StreamReader ( stream ) )
858
+ using ( var reader = new StreamReader ( stream , UseEncoding ) )
870
859
{
871
860
string line ;
872
861
while ( ( line = reader . ReadLine ( ) ) != null )
@@ -975,8 +964,7 @@ public static void UploadFile(this WebRequest webRequest, Stream fileStream, str
975
964
if ( accept != null )
976
965
httpReq . Accept = accept ;
977
966
978
- if ( requestFilter != null )
979
- requestFilter ( httpReq ) ;
967
+ requestFilter ? . Invoke ( httpReq ) ;
980
968
981
969
var boundary = Guid . NewGuid ( ) . ToString ( "N" ) ;
982
970
@@ -1016,7 +1004,7 @@ public static void UploadFile(this WebRequest webRequest, Stream fileStream, str
1016
1004
public static void UploadFile ( this WebRequest webRequest , Stream fileStream , string fileName )
1017
1005
{
1018
1006
if ( fileName == null )
1019
- throw new ArgumentNullException ( " fileName" ) ;
1007
+ throw new ArgumentNullException ( nameof ( fileName ) ) ;
1020
1008
var mimeType = MimeTypes . GetMimeType ( fileName ) ;
1021
1009
if ( mimeType == null )
1022
1010
throw new ArgumentException ( "Mime-type not found for file: " + fileName ) ;
@@ -1112,10 +1100,7 @@ public byte[] GetBytes(HttpWebRequest webReq, byte[] reqBody)
1112
1100
1113
1101
public void UploadStream ( HttpWebRequest webRequest , Stream fileStream , string fileName )
1114
1102
{
1115
- if ( UploadFileFn != null )
1116
- {
1117
- UploadFileFn ( webRequest , fileStream , fileName ) ;
1118
- }
1103
+ UploadFileFn ? . Invoke ( webRequest , fileStream , fileName ) ;
1119
1104
}
1120
1105
}
1121
1106
}
0 commit comments