2011-01-27 3 views
0

У меня есть эта функция в C# ведьмой вызывается через таймер каждые 1 минуту ...как отправить текст с помощью HttpWebRequest класс в C#

private void timer1_Tick(object sender, EventArgs e) 

{ 
    string strServer = "hhttp://www.mydomain.net/save.php"; 
    try { 
     HttpWebRequest reqFP = (HttpWebRequest)HttpWebRequest.Create(strServer); 
     HttpWebResponse rspFP = (HttpWebResponse)reqFP.GetResponse(); 
     if (rspFP.StatusCode == HttpStatusCode.OK) { // ther is an internet connection 
      //send the text stored in 'writeUp' string variable to the url via 'POST' methode 
      rspFP.Close(); //is good to open and close the connection every minute 
     } 
    } 
    catch (WebException) { 
     //I don't know why to use try/catch... but I just don't want any errors to be poped up... 
    } 
    writeUp = ""; 
} 

этот код написан, чтобы сделать следующий:

проверьте, есть ли соединение с сайтом ...
если есть, то ... отправьте текст из строковой переменной «writeup» в файл «save.php», хранящийся в корне сайта ...
где строка write будет отправлена ​​в файл php с использованием метода POST (вместо метода Get) ...
, так что я могу принять текст в PHP с помощью переменной $ _POST [ «»] рецензии
так я могу затем обработать текст, как я хочу ...

еще вопросы ... ведьму лучше открывать и закрывать httprequest каждую минуту ... или держать его открытым все время, доступное интернет-соединение ...

+0

Я вижу только один вопрос здесь - «должен ли я открывать и закрывать». Какие еще вопросы есть? –

+0

Я бы избавился от try/catch. Лучший способ для –

ответ

1
private void timer1_Tick(object sender, EventArgs e)  
{ 
    string strServer = "hhttp://www.mydomain.net/save.php"; 
    try 
    { 
     var reqFP = (HttpWebRequest)HttpWebRequest.Create(strServer); 

     reqFP.Method = "POST"; 
     reqFP.ContentType = "application/x-www-form-urlencoded"; 

     reqFP.ContentLength = writeup.Length; 

     /*var rspFP = (HttpWebResponse)reqFP.GetResponse(); 
     if (rspFP.StatusCode == HttpStatusCode.OK) 
     {*/ 
      //WRITE STRING TO STREAM HERE 
      using (var sw = new StreamWriter(reqFP.GetRequestStream(), Encoding.ASCII)) 
      { 
       sw.Write(writeup); 
      } 

      rspFP.Close(); //is good to open and close the connection every minute 
     /*}*/  
    } 
    catch (WebException) { 
     //I don't know why to use try/catch... 
     //but I just don't want any errors to be poped up... 
    } 
    writeUp = ""; 
} 
+0

+1 Для быстрого ответа я просто писал это. –

+0

Я пробовал его на localhost ... но его ошибка: эта операция не может быть выполнена после отправки запроса. – Wisamx

+0

@ wisam-mo, пожалуйста, попробуйте сейчас. Я думаю, проблема заключается в том, что вы вызываете 'GetResponse()' перед записью в поток. – TheVillageIdiot