示例#1
0
        public async Task <ForceClient> GetApiClient()
        {
            ISalesforceConfig config = MIFConfig.Instance as ISalesforceConfig;

            if (config is null)
            {
                throw new NotImplementedException($"{nameof(MIFConfig)} must implement {nameof(ISalesforceConfig)}.");
            }

            using AuthenticationClient auth = new AuthenticationClient
                  {
                      InstanceUrl = "https://ap16.salesforce.com"
                  };
            await auth.TokenRefreshAsync(config.SalesforceConsumerKey, config.SalesforceRefreshToken, config.SalesforceConsumerSecret);

            ForceClient client = new ForceClient(auth.InstanceUrl, auth.AccessToken, auth.ApiVersion);
            FieldInfo   jsonHttpClientField = client.GetType().GetField("_jsonHttpClient", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

            JsonHttpClient jsonHttpClient = jsonHttpClientField.GetValue(client) as JsonHttpClient;

            FieldInfo httpClientField = jsonHttpClient.GetType().GetField("HttpClient", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

            HttpClient httpClient = httpClientField.GetValue(jsonHttpClient) as HttpClient;

            HttpClientHandler handler = typeof(HttpMessageInvoker).GetField("_handler", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).GetValue(httpClient) as HttpClientHandler;

            handler.AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.None;

            return(client);
        }
示例#2
0
        public static HttpClient GetHttpClient(this ForceClient forceClient)
        {
            var jsonHttpClientField = forceClient.GetType().GetField("_jsonHttpClient", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
            var jsonHttpClient      = jsonHttpClientField.GetValue(forceClient) as JsonHttpClient;
            var httpClientField     = jsonHttpClient.GetType().GetField("HttpClient", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
            var httpClient          = httpClientField.GetValue(jsonHttpClient) as HttpClient;

            return(httpClient);
        }