void ReadTranslateArrayResponse(IAsyncResult asyncResult)
        {
            TranslateTextArrayData translationData = null;
            HttpWebRequest         request         = null;
            HttpWebResponse        response        = null;

            try
            {
                translationData = asyncResult.AsyncState as TranslateTextArrayData;
                request         = translationData.translationWebRequest as HttpWebRequest;
                response        = request.EndGetResponse(asyncResult) as HttpWebResponse;
                using (Stream stream = response.GetResponseStream())
                {
                    List <string> translatedTexts = new List <string>();
                    using (XmlReader reader = XmlReader.Create(stream))
                    {
                        while (reader.Read())
                        {
                            if (reader.NodeType == XmlNodeType.Element)
                            {
                                if (reader.Name == "TranslateArrayResponse")
                                {
                                    if (reader.ReadToDescendant("TranslatedText"))
                                    {
                                        do
                                        {
                                            translatedTexts.Add(reader.ReadString());
                                        }while (reader.ReadToNextSibling("TranslatedText"));
                                    }
                                }
                            }
                        }
                    }

                    Debug.Log("Successfully translated keys!");
                    if (translationData.eventHandler != null)
                    {
                        translationData.eventHandler(true, translationData.keys, translatedTexts);
                    }
                    translationData.eventHandler = null;
                }
            }
            catch (WebException exception)
            {
                Debug.LogError("Failed to translate text array! error: " + exception.Message);
                using (Stream streamResponse = exception.Response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(streamResponse))
                    {
                        Debug.LogError(reader.ReadToEnd());
                    }
                }
                if (translationData.eventHandler != null)
                {
                    translationData.eventHandler(false, null, null);
                }
                translationData.eventHandler = null;
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                    response = null;
                }
            }
        }