コード例 #1
0
        public async Task <HttpResponseHeaders> InvokeAsync(string methodName, IDictionary <string, object> parameters, IDictionary <string, string>?headers = null)
        {
            var endpoint    = _document.GetEndpoint(_serviceName, methodName);
            var contentType = _document.GetRequestContentType(endpoint);
            var url         = new Uri(new Uri(_hostLocation), endpoint);

            using (var client = new HttpClient())
            {
                HttpResponseMessage response;

                using (var request = new MemoryStream())
                {
                    using (var writer = new StreamWriter(request, leaveOpen: true))
                    {
                        JsonSerializer.CreateDefault().Serialize(writer, parameters);
                    }

                    request.Position = 0;
                    using (var content = new StreamContent(request))
                    {
                        content.Headers.ContentType = new MediaTypeHeaderValue(contentType);
                        if (headers != null)
                        {
                            foreach (var entry in headers)
                            {
                                content.Headers.Add(entry.Key, entry.Value);
                            }
                        }

                        response = await client.PostAsync(url, content).ConfigureAwait(false);
                    }
                }

                response.EnsureSuccessStatusCode();
                return(response.Headers);
            }
        }