Esempio n. 1
0
        public object Invoke(OperationDescriptor operation, object[] parameters)
        {
            using (var client = new HttpClient())
            {
                var paramsHolder = operation.BoxParameterValues(parameters);
                var data         = _serializer.Serialize(paramsHolder);
                using (var ms = new MemoryStream(data))
                {
                    var requestContent  = new StreamContent(ms);
                    var url             = GetServiceUrl(operation);
                    var requestTask     = client.PostAsync(url, requestContent);
                    var readDataTask    = requestTask.Result.Content.ReadAsByteArrayAsync();
                    var responseContent = readDataTask.Result;

                    if (operation.IsIterator)
                    {
                        return(ReadFromIterator(operation.ReturnType, responseContent));
                    }
                    else
                    {
                        return(_serializer.Deserialize(operation.ReturnType, responseContent));
                    }
                }
            }
        }