@@ -33,10 +33,8 @@ internal static async Task<T> ParseAsync<T>(HttpResponseMessage response)
33
33
where T : BaseResult
34
34
{
35
35
using ( var stream = await response . Content . ReadAsStreamAsync ( ) . ConfigureAwait ( false ) )
36
- using ( var reader = new StreamReader ( stream ) )
37
36
{
38
- var s = await reader . ReadToEndAsync ( ) . ConfigureAwait ( false ) ;
39
- return CreateResult < T > ( response , s ) ;
37
+ return CreateResult < T > ( response , stream ) ;
40
38
}
41
39
}
42
40
@@ -50,10 +48,8 @@ internal static T Parse<T>(HttpResponseMessage response)
50
48
where T : BaseResult
51
49
{
52
50
using ( var stream = response . Content . ReadAsStreamAsync ( ) . GetAwaiter ( ) . GetResult ( ) )
53
- using ( var reader = new StreamReader ( stream ) )
54
51
{
55
- var s = reader . ReadToEnd ( ) ;
56
- return CreateResult < T > ( response , s ) ;
52
+ return CreateResult < T > ( response , stream ) ;
57
53
}
58
54
}
59
55
@@ -256,22 +252,30 @@ protected void HandleUnsignedParameters(IDictionary<string, object> parameters)
256
252
}
257
253
}
258
254
259
- private static T CreateResult < T > ( HttpResponseMessage response , string s )
255
+ private static T CreateResult < T > ( HttpResponseMessage response , Stream s )
260
256
where T : BaseResult
261
257
{
262
- var result = CreateResultFromString < T > ( s , response . StatusCode ) ;
258
+ var result = CreateResultFromStream < T > ( s , response . StatusCode ) ;
263
259
UpdateResultFromResponse ( response , result ) ;
264
260
return result ;
265
261
}
266
262
267
- private static T CreateResultFromString < T > ( string s , HttpStatusCode statusCode )
263
+ private static T CreateResultFromStream < T > ( Stream s , HttpStatusCode statusCode )
268
264
where T : BaseResult
269
265
{
270
266
try
271
267
{
272
- var result = JsonConvert . DeserializeObject < T > ( s ) ;
273
- result . JsonObj = JToken . Parse ( s ) ;
274
- return result ;
268
+ using ( var streamReader = new StreamReader ( s ) )
269
+ {
270
+ using ( var jsonReader = new JsonTextReader ( streamReader ) )
271
+ {
272
+ var jsonObj = JToken . Load ( jsonReader ) ;
273
+ var result = jsonObj . ToObject < T > ( ) ;
274
+ result . JsonObj = jsonObj ;
275
+
276
+ return result ;
277
+ }
278
+ }
275
279
}
276
280
catch ( JsonException jex )
277
281
{
0 commit comments