전체 HttpWebRequest를 파일에 작성 [중복]

Nov 13 2020
byte[] jData = Encoding.UTF8.GetBytes(DATA);

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);

ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return true; });

//required this (header method not working)
CredentialCache crCache = new CredentialCache();
crCache.Add(new Uri(URL), "Basic", new NetworkCredential(uName, uPwd));
req.Credentials = crCache;

//required below, to enable cookies to carry authentication value over each request.
req.CookieContainer = new CookieContainer();

req.Accept = "application/json";
req.Method = "POST";
req.ContentType = "application/json;charset=utf-8";
req.Headers.Add(headerKey, headerValue);

req.GetRequestStream().Write(jData, 0, jData.Length);

using (HttpWebResponse res = (HttpWebResponse)req.GetResponse()) {
    using (StreamReader strm = new StreamReader(res.GetResponseStream())) {
        result = strm.ReadToEnd();
    }
}

위의 코드 줄은 JSon 웹 서비스에 대한 간단한 호출입니다. 문제는 UnAuthorized 오류로 인해 언젠가 호출이 실패한다는 것입니다. 따라서 전체 요청을 보려면 HttpWeRequest를 텍스트 파일에 기록해야합니다. 여기에는 헤더, 인증 자격 증명 및 본문이 포함되어야합니다. 전체 요청을 캡처하여 파일에 기록하는 방법을 알 수 있습니까?

감사

답변

2 YaroslavMenshikov Nov 13 2020 at 01:35
for (int i = 0; i < req.Headers.Count; ++i)
{
    string header = req.Headers.GetKey(i);
    foreach (string value in req.Headers.GetValues(i))
    {
        Console.WriteLine("{0}: {1}", header, value);
    }
}
1 qazwsx123 Nov 13 2020 at 01:28

GetResponseStream() 전체 응답이 아닌 응답 본문의 스트림을 제공합니다.

Header속성을 사용 HttpWebResponse하여 헤더를 잡을 수 있습니다.

https://docs.microsoft.com/en-us/dotnet/api/system.net.httpwebresponse.headers?view=net-5.0#System_Net_HttpWebResponse_Headers