2013-10-11 2 views
0

Я использовал следующий код для выполнения асинхронного HTTP-запроса на C#.Асинхронный HTTP POST в C# 4.0

private static Task GetUrl(string url) 
    { 
     var request = (HttpWebRequest)WebRequest.Create(url); 
     request.UserAgent = 
      "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36"; 
     request.Accept = "text/html"; 
     return Task 
      .Factory 
      .FromAsync<WebResponse>(request.BeginGetResponse, request.EndGetResponse, url) 
      .ContinueWith(t => 
      { 
       if (t.IsCompleted) 
       { 
        using (var stream = t.Result.GetResponseStream()) 
        { 
         using (var reader = new StreamReader(stream)) 
         { 
          //Console.WriteLine("-- Successfully downloaded {0} --", t.AsyncState); 
          //Console.WriteLine(reader.ReadToEnd()); 
         } 
        } 
       } 
       else if (t.IsFaulted) 
       { 
        Console.WriteLine("There was an error downloading {0} - {1}", t.AsyncState, t.Exception); 
       } 
      }); 
    } 

Однако я не уверен, как изменить этот код для поддержки HTTP-сообщения. Любая помощь приветствуется!

В частности, я хотел бы знать, как я должен добавить BeginGetRequestStream и EndGetRequestStream в текущей функции ...

+0

просто поиск «WebRequest POST », это довольно просто и [здесь] (http://msdn.microsoft.com/en-us/library/debx8sh9.aspx) ссылка ... это не имеет никакого отношения к остальной части вашего кода, вам просто нужно для настройки вашего «WebRequest» по-разному. –

+0

См. Это: http://stackoverflow.com/questions/18513907/how-to-make-multiple-post-request-using-httpwebrequest-in-silverlight-4-and-net – Nostradamus

ответ

1

Используйте свойство Method в HttpWebRequest:

request.Method = "POST"; 
Смежные вопросы