public void Exchange() { Uri requestUri = new Uri("http://example.com"); HttpMethod requestMethod = HttpMethod.POST; Expect.Call <bool>(converter.CanRead(typeof(Version), null)).Return(true); MediaType textPlain = new MediaType("text", "plain"); IList <MediaType> mediaTypes = new List <MediaType>(1); mediaTypes.Add(textPlain); Expect.Call <IList <MediaType> >(converter.SupportedMediaTypes).Return(mediaTypes); Expect.Call <IClientHttpRequest>(requestFactory.CreateRequest(requestUri, requestMethod)).Return(request); HttpHeaders requestHeaders = new HttpHeaders(); Expect.Call <HttpHeaders>(request.Headers).Return(requestHeaders).Repeat.Any(); string helloWorld = "Hello World"; Expect.Call <bool>(converter.CanWrite(typeof(string), null)).Return(true); converter.Write(helloWorld, null, request); ExpectGetResponse(); Expect.Call <bool>(errorHandler.HasError(requestUri, requestMethod, response)).Return(false); HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.ContentType = textPlain; Expect.Call <HttpHeaders>(response.Headers).Return(responseHeaders).Repeat.Any(); ExpectHasMessageBody(responseHeaders); Version expected = new Version(1, 0); Expect.Call <bool>(converter.CanRead(typeof(Version), textPlain)).Return(true); Expect.Call <Version>(converter.Read <Version>(response)).Return(expected); Expect.Call <HttpStatusCode>(response.StatusCode).Return(HttpStatusCode.OK); Expect.Call <string>(response.StatusDescription).Return("OK"); mocks.ReplayAll(); HttpHeaders requestMessageHeaders = new HttpHeaders(); requestMessageHeaders.Add("MyHeader", "MyValue"); HttpEntity requestEntity = new HttpEntity(helloWorld, requestMessageHeaders); HttpResponseMessage <Version> result = template.Exchange <Version>("http://example.com", HttpMethod.POST, requestEntity); Assert.AreEqual(expected, result.Body, "Invalid POST result"); Assert.AreEqual(textPlain, result.Headers.ContentType, "Invalid Content-Type"); Assert.AreEqual(textPlain.ToString(), requestHeaders.GetSingleValue("Accept"), "Invalid Accept header"); Assert.AreEqual("MyValue", requestHeaders.Get("MyHeader"), "No custom header set"); Assert.AreEqual(HttpStatusCode.OK, result.StatusCode, "Invalid status code"); Assert.AreEqual("OK", result.StatusDescription, "Invalid status description"); }
public void GetPulseById(string id) { parameters = new Dictionary <string, object>(); parameters.Add("id", id); HttpResponseMessage <string> responsePulse = restTemplate.Exchange <string>("/api/v1/pulses/{id}", HttpMethod.GET, requestEntity, parameters); if (responsePulse.StatusCode == HttpStatusCode.OK) { Pulse pulse = JsonSerializer.Deserialize <Pulse>(responsePulse.Body); database.AddPulse(pulse); File.WriteAllText(string.Format("./pulse-{0}.json", pulse.Id), JsonSerializer.Serialize(pulse, serializerOptions)); Console.WriteLine(pulse); return; } Console.WriteLine("Response status: {0}", responsePulse.StatusCode.ToString()); }