コード例 #1
0
ファイル: Utils.cs プロジェクト: kirillkrylov/App2UWP-Pub
        /// <summary>
        /// Returns object containing Base64 encoded Images.
        /// </summary>
        /// <param name="id">Id of the Image in SysImage Table</param>
        /// <returns>Base64 encoded image or error message</returns>
        public async Task <RequestResponse> GetImageAsync(string id)
        {
            string         transportUrl = Url.TransportUrl(ActionEnum.SYSIMAGE, Instance.domain) + id;
            HttpStatusCode Code;

            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(transportUrl);

            myHttpWebRequest.Method          = "GET";
            myHttpWebRequest.ContentType     = "application/octet-stream";
            myHttpWebRequest.CookieContainer = Auth;

            Uri siteUri = new Uri(transportUrl);

            foreach (Cookie cookie in Auth.GetCookies(siteUri))
            {
                if (cookie.Name == "BPMCSRF" || cookie.Name == "BPMSESSIONID")
                {
                    myHttpWebRequest.Headers.Add(cookie.Name, cookie.Value);
                }
            }
            //Send Request
            try
            {
                using (HttpWebResponse myHttpWebResponse = (HttpWebResponse)await myHttpWebRequest.GetResponseAsync().ConfigureAwait(false))
                {
                    Code = myHttpWebResponse.StatusCode;
                    if (Instance.BpmSessionId == false)
                    {
                        string val = myHttpWebResponse.Cookies["BPMSESSIONID"].Value;
                        Cookie C   = new Cookie("BPMSESSIONID", val);
                        Auth.Add(new Uri(Instance.domain), C);
                        Instance.BpmSessionId = true;
                    }
                    using (Stream myStream = myHttpWebResponse.GetResponseStream())
                    {
                        //Stream str = myHttpWebResponse.GetResponseStream();
                        byte[] inBuf       = new byte[myHttpWebResponse.ContentLength];
                        int    bytesToRead = (int)inBuf.Length;
                        int    bytesRead   = 0;
                        while (bytesToRead > 0)
                        {
                            int n = myStream.Read(inBuf, bytesRead, bytesToRead);
                            if (n == 0)
                            {
                                break;
                            }
                            bytesRead   += n;
                            bytesToRead -= n;
                        }
                        string PhotoData = Convert.ToBase64String(inBuf);
                        myStream.Close();
                        myStream.Dispose();

                        RequestResponse ir = new RequestResponse()
                        {
                            HttpStatusCode = Code,
                            Result         = PhotoData,
                            ErrorMessage   = null
                        };
                        return(ir);
                    }
                }
            }
            catch (WebException we)
            {
                Code = ((HttpWebResponse)(we).Response).StatusCode;
                using (StreamReader MyStreamReader = new StreamReader(((HttpWebResponse)(we).Response).GetResponseStream(), true))
                {
                    return(new RequestResponse()
                    {
                        HttpStatusCode = Code,
                        Result = null,
                        ErrorMessage = MyStreamReader.ReadToEnd()
                    });
                }
            }
        }