#c_sharp #get
Доброе время суток! При вызове Get метода, catch(Exception ex) выводит ошибку "Сервер нарушил протокол. Section=ResponseStatusLine. код на клиенте Метод get-запроса: public String URL = "http://192.168.16.254:8080/blinkSs"; string r = ""; private string GET(string sUrl, string Data) { System.Net.WebRequest req = System.Net.WebRequest.Create(sUrl + "?" + Data); System.Net.WebResponse resp = req.GetResponse(); System.IO.Stream stream = resp.GetResponseStream(); System.IO.StreamReader sr = new System.IO.StreamReader(stream); string Out = sr.ReadToEnd(); sr.Close(); return Out; } Вызываю метод GET вот так: if (e.KeyCode == Keys.Up) { try { r = "oske"; String a=GET(URL, r); MessageBox.Show(a); } catch(Exception ex) { MessageBox.Show("error" + " " + ex.Message); } } код на сервере: void setup() { Serial.begin(115200); pinMode(13, OUTPUT); //Rele 1 //pinMode(12, OUTPUT); //Rele 2 } int f = 0; String com_get = "";// void loop() { boolean has_request = false; String in = ""; if (Serial.available()) { in = ""; while (true) { // should add time out here while (Serial.available() == false) {} in += (char)(Serial.read());//тут хттп запрос, урл адресс if (in.endsWith("\r\n\r\n")) {//если первая строка (string) завершается символом, содержащимся в строке string2 has_request = true; break; } } } if (has_request) { int i1 = in.indexOf("GET /blinkSs?"), i2;//13 символов if (i1 != -1) { i2 = in.indexOf(" ", i1+13);//кол. символов с 13ого f = in.substring(i1+13, i2).toInt();//запрос com_get=in.substring(i1+13, i2); } //Serial.println("HTTP/1.1 200 OK\nContent-Type: text/html\nConnection: close"); //String sr = ""; //Serial.println(sr); // Serial.println(""); //Serial.println(""); //Serial.println(""); //Serial.println(""); if (com_get=="oske") {f=1; Serial.println("Comando 1. oske"); } //↑ if (com_get=="aska") {f=2; Serial.println("Comando 2. aska"); }//↓ if (com_get=="kren_unga") {f=3; Serial.println("Comando 3. kren_unga"); }// / if (com_get=="kren_sulga") {f=1; Serial.println("Comando 1. kren_sulga"); }// \ //Serial.println(""); //Serial.println("\n"); has_request = false; } switch (f){ case 1: digitalWrite(13, HIGH); break; case 2: digitalWrite(13, LOW); break; f=0; Serial.end(); } }
Ответы
Ответ 1
В файл app.config добавьтеЗадание этого свойства игнорирует ошибки проверки, возникающие при анализе HTTP. Ответ 2
Очевидно же, что ты на сервере код состояния Status-Line не отправляешь. Изучи RFC https://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html Response = Status-Line ; Section 6.1 *(( general-header ; Section 4.5 | response-header ; Section 6.2 | entity-header ) CRLF) ; Section 7.1 CRLF [ message-body ] ; Section 7.
Комментариев нет:
Отправить комментарий