private void btnDequeue_Click(object sender, EventArgs e) { if (txtBoxOutActivity.Text.Length == 0) { return; } Cursor.Current = Cursors.WaitCursor; //authenticate Helper helper = new Helper(txtBoxClientId.Text, txtBoxSecret.Text); //remove the unwanted curly braces txtBoxOutActivity.Text = txtBoxOutActivity.Text.Replace("{", ""); txtBoxOutActivity.Text = txtBoxOutActivity.Text.Replace("}", ""); //access the Connector API UriBuilder dequeueUri = new UriBuilder(txtBoxBaseUri.Text); dequeueUri.Path = "api/connector/dequeue/" + txtBoxOutActivity.Text; //send a request to get the next queue message HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, dequeueUri.Uri); request.Headers.Add("Authorization", helper.AuthenticationHeader); HttpResponseMessage response = helper.SendRequest(request); //read the response ActivityMessage responseMessage = response.Content.ReadAsAsync <ActivityMessage>().Result; if (responseMessage == null) { MessageBox.Show("No more messages in the queue"); return; } //read the downloadlocation and make a blob request request = new HttpRequestMessage(HttpMethod.Get, responseMessage.DownloadLocation.ToString()); request.Headers.Add("Authorization", helper.AuthenticationHeader); //send a request to get the actual content from the blob storage HttpResponseMessage blobResponse = helper.SendRequest(request); richTxtDequeue.Text = blobResponse.Content.ReadAsStringAsync().Result; //ack the message UriBuilder ackUri = new UriBuilder(txtBoxBaseUri.Text); ackUri.Path = "api/connector/ack/" + txtBoxOutActivity.Text; helper.SendPostRequest(ackUri.Uri, helper.AuthenticationHeader, null, responseMessage); richTxtLog.AppendText("Message dequeued and acked. MessageId: " + responseMessage.CorrelationId + "\u2028"); Cursor.Current = Cursors.Default; }
public HttpResponseMessage SendPostRequest(Uri uri, string authenticationHeader, string body, ActivityMessage message) { using (HttpClientHandler handler = new HttpClientHandler() { UseCookies = false }) { using (HttpClient webClient = new HttpClient(handler)) { webClient.DefaultRequestHeaders.Authorization = ParseAuthenticationHeader(authenticationHeader); HttpResponseMessage response; if (body != null) { //convert string into memorystream to be passed in the post request byte[] bytes = Encoding.ASCII.GetBytes(body); MemoryStream memStream = new MemoryStream(bytes); using (StreamContent content = new StreamContent(memStream)) { response = webClient.PostAsync(uri, content).Result; } } else { response = webClient.PostAsJsonAsync <ActivityMessage>(uri.ToString(), message).Result; } return(response); } } }