public async Task <Contract.Face[]> DetectAsync(Stream imageStream, bool returnFaceId = true, bool returnFaceLandmarks = false, IEnumerable <FaceAttributeType> returnFaceAttributes = null)
        {
            Contract.Face[] faceArray;
            if (returnFaceAttributes == null)
            {
                object[]        serviceHost = new object[] { this.ServiceHostCn, "detect", returnFaceId, returnFaceLandmarks };
                string          str         = string.Format("{0}/{1}?returnFaceId={2}&returnFaceLandmarks={3}", serviceHost);
                Contract.Face[] faceArray1  = await this.SendRequestAsync <Stream, Contract.Face[]>(HttpMethod.Post, str, imageStream);

                faceArray = faceArray1;
            }
            else
            {
                object[]        objArray   = new object[] { this.ServiceHostCn, "detect", returnFaceId, returnFaceLandmarks, FaceServiceClient.GetAttributeString(returnFaceAttributes) };
                string          str1       = string.Format("{0}/{1}?returnFaceId={2}&returnFaceLandmarks={3}&returnFaceAttributes={4}", objArray);
                Contract.Face[] faceArray2 = await this.SendRequestAsync <Stream, Contract.Face[]>(HttpMethod.Post, str1, imageStream);

                faceArray = faceArray2;
            }
            return(faceArray);
        }