public void LogToDisk(int sequence, ResponseLog log) { var debugFolder = Path.Combine(_environmentService.ReplayLogFolder, @"log2Disk"); Directory.CreateDirectory(debugFolder); var pathAsSafeFilename = log.RequestUri.PathAndQuery.Replace("/", "_").Replace("?", "_"); var filename = sequence + "_" + pathAsSafeFilename + "_" + log.RequestUri.Host; var debugFile = Path.Combine(debugFolder, $"{filename}.txt"); var sb = new StringBuilder(); sb.AppendLine($"Request.Url={log.RequestUri}"); sb.AppendLine($"Request.Body:{log.RequestBody}"); sb.AppendLine($"Request.Method:{log.RequestMethod}"); sb.AppendLine("Response:"); sb.Append(log.ResponseBody); File.WriteAllText(debugFile, sb.ToString()); }
public static ResponseLog GetResponse(IPAddress targetIp, int port, string pathAndQuery) { var result = new ResponseLog(); using (var httpClient = new HttpClient()) { var uri = new Uri($"http://{targetIp}:{port}" + pathAndQuery); result.RequestUri = uri; try { HttpResponseMessage response = httpClient.GetAsync(uri).Result; var stream = response.Content.ReadAsStreamAsync().Result; var reader = new StreamReader(stream); result.ResponseBody = reader.ReadToEnd(); stream.Seek(0, SeekOrigin.Begin); result.ResponseBytes = ReadFully(stream); if (result.ResponseBody.StartsWith("<")) { result.ResponseBody = AsFormattedXml(result.ResponseBody); } if (result.ResponseBody.StartsWith("{")) { result.ResponseBody = AsFormattedJson(result.ResponseBody); } } catch (Exception e) { result.ResponseBody = e.Message; } } return(result); }