HttpWebRequest 및 HttpWebResponse 사용법 소결
여러 가지 신기한 오류가 발생했습니다. 처음에 기록 오류 로그가 있었지만 많은 고객들이 자신의 서버와 데이터베이스를 사용했습니다. 문제가 생기면 우리는 즉시 정보를 파악할 수 없습니다.
그래서 모든 시스템의 이상을 포착하여 자신의 데이터베이스에 저장하기로 결정했다.
사고방식을 실현하다
각 시스템에서 보고서 오류 코드를 작성합니다(예를 들어 시스템 무료 업그레이드) -> 자체 서버에서 오류 보고서를 수신하고 처리합니다 -> 피드백 사용자(BUG를 해결하면 됩니다. 너무 떠들지 마세요)
기초 회고
--- msdn 참조
1. HttpWebRequest 클래스: WebRequest 클래스를 제공하는 Http의 특정한 실현.
HttpWebRequest 클래스는 WebRequest에 정의된 속성과 방법을 지원하고 사용자가 HTTP를 사용하는 서버와 직접 상호작용할 수 있도록 하는 추가 속성과 방법을 지원합니다.
구조 함수를 사용하여 HttpWebRequest 인스턴스를 만들지 말고 System을 사용하십시오.Net.WebRequest.Create(URI uristring)로 인스턴스를 만듭니다. URI가 Http://또는 Https://,
HttpWebRequest 객체가 반환됩니다.(특정 URI를 요청하는 객체 설정)
리소스에 데이터를 보낼 때 GetRequestStream 메서드는 데이터를 보낼 Stream 객체를 반환합니다.(요청 데이터를 가져오는 흐름 대상)
GetResponse 메서드는 RequestUri 속성에 지정된 리소스에 동기화 요청을 보내고 응답을 포함하는 HttpWebResponse로 돌아갑니다.(인터넷 응답 얻기)
실례 설명
1. 원격 요청 및 응답 복귀
///
///
///
///
///
public static string Sys_ReportError(Exception ex)
{
try
{
// URI
string uriString = "http://localhost/Sys_ReportError.aspx";
HttpContext context = HttpContext.Current;
if (context == null) return string.Empty;
string targetSite = ex.TargetSite.ToString();
string stackTrace = ex.StackTrace;
string friendlyMsg = ex.Message;
string errorPage = context == null || context.Request == null ? "" : context.Request.Url.ToString();
string projectName = Config.Sys_Title();
//
string postString = "targetSite=" + HttpUtility.UrlEncode(targetSite);
postString += "&stackTrace=" + HttpUtility.UrlEncode(stackTrace);
postString += "&friendlyMsg=" + HttpUtility.UrlEncode(friendlyMsg);
postString += "&errorPage=" + HttpUtility.UrlEncode(errorPage);
postString += "&projectName=" + HttpUtility.UrlEncode(projectName);
postString += "&key=" + "";
HttpWebRequest webRequest = null;
StreamWriter requestWriter = null;
string responseData = "";
webRequest = System.Net.WebRequest.Create(uriString) as HttpWebRequest;
webRequest.Method = "POST";
webRequest.ServicePoint.Expect100Continue = false;
webRequest.Timeout = 1000 * 60;
webRequest.ContentType = "application/x-www-form-urlencoded";
//POST the data.
requestWriter = new StreamWriter(webRequest.GetRequestStream());
try
{
requestWriter.Write(postString);
}
catch (Exception ex2)
{
return " ";
}
finally
{
requestWriter.Close();
requestWriter = null;
}
responseData = WebResponseGet(webRequest);
webRequest = null;
return responseData;
}
catch
{
return " ";
}
}
///
/// Process the web response.
///
/// The request object.
/// The response data.
public static string WebResponseGet(HttpWebRequest webRequest)
{
StreamReader responseReader = null;
string responseData = "";
try
{
responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
responseData = responseReader.ReadToEnd();
}
catch
{
return " ";
}
finally
{
webRequest.GetResponse().GetResponseStream().Close();
responseReader.Close();
responseReader = null;
}
return responseData;
}
2. 원격 서버 읽기 흐름
_context = HttpContext.Current;
Stream stream = _context.Request.InputStream; // Http
long length = stream.Length;
byte[] data = _context.Request.BinaryRead((int)length);//
string strContent = Encoding.UTF8.GetString(data);// UTF8
코드 설명은 여기서 끝납니다.
1. HttpWebRequest 객체에는 Method(전송 방식), Time Out(요청 시간 초과), ContentType(Http 헤더의 값) 등 관련 설정 속성이 있습니다.
2. 원격 수신 페이지에서 오류가 발생하면 어떻게 디버깅해야 하는지 간단합니다. 다음 코드만 쓰십시오.
HttpWebResponse res = null;
WebResponse response = null;
try
{
WebResponse response = webRequest.GetResponse();
}
catch (WebException ex1)
{
res = (HttpWebResponse)ex1.Response;
}
finally
{
StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
string strhtml = sr.ReadToEnd();
HttpContext.Current.Response.Write(strhtml);
}
서버 응답을 가져오는 중 오류가 발생했을 때 오류를 포착하여 오류를 출력하면 됩니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.