2012-03-15 13 views
0

私は次のコードでPOSTリクエストを送信します。投稿リクエストを送信したときの返信データを無視するにはどうすればよいですか?

try 
      { 
       string responseContent; 
       request = (HttpWebRequest)WebRequest.Create(url); 
       request.CookieContainer = cookieContainer; 
       // Set Method to "POST" 
       request.Method = "POST"; 
       // Set the content type of the WebRequest 
       request.ContentType = "application/x-www-form-urlencoded"; 
       request.Proxy = GlobalProxySelection.GetEmptyWebProxy(); 
       request.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3"; 
       // Set the content length 
       ASCIIEncoding encoding = new ASCIIEncoding(); 
       byte[] byteArray = encoding.GetBytes(requestCommand); 
       request.ContentLength = byteArray.Length; 
       // Get the request stream 
       using (Stream requestStream = request.GetRequestStream()) 
       { 
        // Write the "POST" data to the stream 
        requestStream.Write(byteArray, 0, byteArray.Length); 
       } 
       using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
       { 
        using (Stream responseStream = response.GetResponseStream()) 
        { 
         using (BufferedStream buffer = new BufferedStream(responseStream)) 
         { 
          using (StreamReader reader = new StreamReader(buffer)) 
          { 
           responseContent = reader.ReadToEnd(); 
          } 
         } 
        } 
       } 
       return responseContent; 
      } 
      catch (Exception ex) 
      { 
       return ex.Message; 
      } 
} 

それはOK作品です。しかし、以下のコード行は非常に遅いです。

using (StreamReader reader = new StreamReader(buffer)) 
{ 
    responseContent = reader.ReadToEnd(); 
} 

なぜわからないのですか?私はset proxy = nullのような解決策を見つけるのにもっと時間を費やしましたが、結果はありません。 その行を無視する方法はありますか?私は応答データを受け取る必要はありません。私はその行を次のように置き換えようとしました:

using (Stream responseStream = response.GetResponseStream()) 
{ 
    responseStream.Flush(); 
    responseStream.Close(); 
} 

しかし、投稿要求を正しく送信することはできません。私を助けてください。本当にありがとう!

答えて

0

レスポンスが気にならない場合や、失敗した場合は、新しいスレッドで応答をキューに入れて無視するだけです。

using (Stream requestStream = request.GetRequestStream()) 
{ 
    // Write the "POST" data to the stream 
    requestStream.Write(byteArray, 0, byteArray.Length); 
} 

// now put the get response code in a new thread and immediately return 
ThreadPool.QueueUserWorkItem((x) => 
{ 
    using (var objResponse = (HttpWebResponse) request.GetResponse()) 
    { 
     responseStream = new MemoryStream(); 
     objResponse.GetResponseStream().CopyTo(responseStream); 
     responseStream.Seek(0, SeekOrigin.Begin); 
    } 
}); 
+0

ありがとう – Tiang

関連する問題