2015-01-11 2 views
0

다른 웹 사이트에서 초당 수백 건의 조회를 수행하는 프로그램을 만들었습니다.WebRequest 클래스, 코드 최적화?

HttpWebRequest request = (HttpWebRequest) WebRequest.Create ("SecureControl// reset/passwordreset"); 
request.Headers.Add ("Authorization", "Basic asdadsasdas8586"); 
request.ContentType = "application/x-www-form-urlencoded"; 
request.Host = "www.xxxxxxxxxx.com"; 
request.method = "POST"; 
request.Proxy = null; 
request.Headers.Add ("& command = requestnewpassword"); 
request.Headers.Add ("& application = netconnect"); 

이 코드는 반복적으로 반복되므로 헤더를 개별적으로 추가하면 CPU가 너무 많은 메모리를 사용합니다.

아이디어는 vb6에서 winsock으로 사용하는 것입니다. 예 : Winsock1.Sendata AllHTTPHeaders 따라서 머리글을 추가하지 않고 데이터 만 보냅니다.

나는 불필요한 헤더를 추가하는 코드를 선언하지 않는 방법이 있다면, 내 질문은 CPU 리소스를 저장하고 싶습니다. 하나의 변수 http 헤더에 저장하는 방법이 있습니까? 을 보내고 더 빠른 방법으로 보내십시오.

다음과 같은 형식입니다. HttpWebRequest request = (HttpWebRequest) ALLHEADERS.

아이디어가 있으십니까? 감사합니다.

+0

는이 헤더의 문자열 출력이 어떻게 될지 볼 수 있습니다, 그리고 당신이 필요로하는 문자열 구축 :

고려? – Jeremy

+0

Jeremy 나는 당신이 나를 오해 한 것 같아요. 하나의 변수 헤더에 저장하고 WebRequest 클래스를 사용하여 보내고 싶습니다. 예 : Var optimize = "GET/HTTP/1.1 \ r \ nHost : example.com \ r \ n 사용자 에이전트 : 예 \ r \ nReferer : 예 \ r \ nCookie : 예 \ r \ n \ r \ n " 이렇게하면 다음과 같이 사용할 수 있습니다. WebRequest.Create (Optimize) 루프를 반복 할 때마다 헤더를 추가하는 대신 CPU 리소스를 절약 할 수 있습니다. –

+0

_ "vb6에서 winsock으로 사용하는 것이 좋습니다"_ - 그래서 여러분의 질문은 "소켓을 사용하여 HTTP 요청을 수행하는 방법"_이며, 이전에 질문하고 대답 한 내용은 복제본을 참조하십시오. 이 특정 요청을 실행하는 이유는 무엇입니까? 멀웨어를 작성하려고합니까? – CodeCaster

답변

0

공유 WebHeaderCollection의 인스턴스와는 webrequests '헤더 속성에 할당 :

private static readonly WebHeaderCollection Headers = new WebHeaderCollection() 
{ 
    {"Foo", "bar"} 
}; 

을 또한 모든 요청을 만들기 위해 한 번 이전에 null로 WebRequest.DefaultWebProxy을 설정할 수 있습니다, 당신은 명시 적으로 할 필요가 없습니다 있도록 매 요청마다.

private static readonly WebHeaderCollection Headers = new WebHeaderCollection() 
    { 
     {"Authorization", "Basic asdadsasdas8586"}, 
     {"command", "requestnewpassword"}, 
     {"application", "netconnect"} 
    }; 

private static void Start(int nRequests) 
{ 
    WebRequest.DefaultWebProxy = null; 

    for (var i = 0; i < nRequests; ++i) { 
     SendRequest(); 
    } 
} 

private static bool SendRequest() 
{ 
    var request = HttpWebRequest.Create("URL"); 
    request.Headers = Headers; 
    //Set other properties (like .Method) here 

    using (var response = (HttpWebResponse)request.GetResponse()) { 
     //Returns boolean indicating success 
     return response.StatusCode == HttpStatusCode.OK; 
    } 
} 
+0

등 감사합니다. 구현 방법에 대한 간단한 예를 들어 주시겠습니까? –

+0

@SergioGarciaLopez 당신이 그것을 구현하는 방법에 대한 아이디어를주기 위해 간단한 예를 내 게시물에 추가했습니다. 예를 위해 사용한 헤더를 변경해야합니다. –

+0

정말 고맙습니다! 지금 당장 코드를 구현하십시오! –