2013-12-03 3 views
0

Я использую HttpWebRequest.GetRequestStream для подключения на другой ссылке PHP из Dot Net в POST некоторые данные из .Net в PHP. Но его работала нормально первые два раза, когда элемент управления пришел в строку «Stream newrStream = myrRequest.GetRequestStream();» и задерживается на секунду с третьего раза. Как решить эту проблему.Take Delay on HttpWebRequest.GetRequestStream

Моя кодирование:

ASCIIEncoding Encode = new ASCIIEncoding(); 
    string postDat = "Name=xxx"; 
    byte[] datas = Encode.GetBytes(postDat); 

HttpWebRequest myrRequest = HttpWebRequest)WebRequest.Create("http://www.xxx.php"); 
      myrRequest.Method = "POST"; 
      myrRequest.ContentType = "application/x-www-form-urlencoded"; 
      myrRequest.ContentLength = datas.Length; 
      Stream newrStream = myrRequest.GetRequestStream(); 

      // Send the data. 
      newrStream.Write(datas, 0, datas.Length); 
      newrStream.Close(); 
+1

Итак, что именно здесь вопрос? –

+0

как уменьшить время задержки – user2756361

ответ

0

Первое, что нужно иметь в виду, чтобы просмотреть URI, параметры и заголовки отправляются, а именно:

  1. зарезервированных символов. Отправить зарезервированные символы в URI может принести проблемы ! * ' () ; : @ & = + $ ,/? # [ ]
  2. URI Длина: Вы не должны превышать 2000 символов
  3. Длина заголовка: Большинство веб-серверов делают предельный размер заголовков они принимают. Например, в Apache значение по умолчанию составляет 8 КБ.

Имейте в виду, что если вы хотите отправить данные из большей длины рекомендуется посылать в теле сообщения:

string uri = string.Format("https://my-server.com/api/document?queryParameter={1}", "value"); 
    WebRequest req = WebRequest.Create(uri); 
    req.Method = "POST"; 
    string data = "Some data"; //Body data 
    ServicePointManager.Expect100Continue = false; 
    using (var streamWriter = new StreamWriter(req.GetRequestStream())) 
    { 
     streamWriter.Write(data); 
     streamWriter.Flush(); 
     streamWriter.Close(); 
    } 
    HttpWebResponse resp = req.GetResponse() as HttpWebResponse; 
    Stream GETResponseStream = resp.GetResponseStream(); 
    StreamReader sr = new StreamReader(GETResponseStream); 
    var response = sr.ReadToEnd(); //Response 
    resp.Close(); //Close response 
    sr.Close(); //Close StreamReader