ADCImportExport.Program.AzureDataCatalog.SetRequestAndGetResponse C# (CSharp) Method

SetRequestAndGetResponse() private static method

private static SetRequestAndGetResponse ( HttpWebRequest request, string &requestId, string payload = null ) : HttpWebResponse
request System.Net.HttpWebRequest
requestId string
payload string
return System.Net.HttpWebResponse
            private static HttpWebResponse SetRequestAndGetResponse(HttpWebRequest request, out string requestId, string payload = null)
            {
                while (true)
                {
                    //Add a guid to help with diagnostics
                    requestId = Guid.NewGuid().ToString();
                    request.Headers.Add("x-ms-client-request-id", requestId);
                    //To authorize the operation call, you need an access token which is part of the Authorization header
                    request.Headers.Add("Authorization", auth.CreateAuthorizationHeader());
                    //Set to false to be able to intercept redirects
                    request.AllowAutoRedirect = false;

                    if (!string.IsNullOrEmpty(payload))
                    {
                        byte[] byteArray = Encoding.UTF8.GetBytes(payload);
                        request.ContentLength = byteArray.Length;
                        request.ContentType = "application/json";
                        //Write JSON byte[] into a Stream
                        request.GetRequestStream().Write(byteArray, 0, byteArray.Length);
                    }
                    else
                    {
                        request.ContentLength = 0;
                    }

                    HttpWebResponse response = request.GetResponse() as HttpWebResponse;

                    // Requests to **Azure Data Catalog (ADC)** may return an HTTP 302 response to indicate
                    // redirection to a different endpoint. In response to a 302, the caller must re-issue
                    // the request to the URL specified by the Location response header. 
                    if (response.StatusCode == HttpStatusCode.Redirect)
                    {
                        string redirectedUrl = response.Headers["Location"];
                        HttpWebRequest nextRequest = WebRequest.Create(redirectedUrl) as HttpWebRequest;
                        nextRequest.Method = request.Method;
                        request = nextRequest;
                    }
                    else
                    {
                        return response;
                    }
                }
            }