학교 프로젝트를 위해 저는 작은 Arduino 기반 기상 관측소를 구축하고 있습니다. 이 스테이션은 데이터를 MySQL 데이터베이스에 넣는 PHP 페이지 (CC3000 사용)로 보냅니다. 내가 며칠 전에 작업 한 코드는 지금은 작동을 멈췄습니다. 문제는 내 서버에서 400 개의 잘못된 요청을 받았다는 것입니다. 내가 사용하는 코드는 다음과 같습니다.
while (!client.connected()){
Connect();
}
client.fastrprint(F(" GET "));
client.fastrprint(PAGE);
client.fastrprint(F("?sensor="));
client.fastrprint(sensor);
client.fastrprint(F("&&unit="));
client.fastrprint(unit);
client.fastrprint(F("&&value="));
client.fastrprint(charBuffer);
client.fastrprint(F("&&pass="));
client.fastrprint(F(" HTTP/1.1\r\n"));
client.fastrprint(F("Host: "));
client.fastrprint(SERVER);
client.fastrprint(F(":80\r\n"));
client.fastrprint(F("\r\n"));
client.println();
이제 대부분의 코드는 adafruit의 샘플 함수에서 나옵니다. 이상한 점은 텔넷을 사용하여 동일한 요청을 보낼 때 HTTP 400 잘못된 요청도 다시 받는다는 것입니다. 그러나 브라우저를 사용하여 URL을 요청하면 PHP 페이지가 데이터를 받아 데이터베이스에 저장합니다. 다음은 텔넷에서 사용한 명령입니다.
GET /weer/add.php?sensor=DHT&&unit=C&&value=99.99&&pass= HTTP:/1.1
Host:www.---.nl
누구든지 내 요청에 무엇이 잘못되었는지 알아낼 수 있습니까?
도움이된다면 서버는 nginx 1.7.0을 실행합니다.
그래서 코드를 변경하여 형식 문자열의 버퍼를 사용하여 문자열을 컴파일했습니다. 이 버퍼는 client.println을 사용하여 전송됩니다. 결국 나는 여전히 똑같은 메시지를 내 서버에 보내고 있지만 이제는 작동합니다. 나는 client.fastrprint가 일을 망치고 있다고 생각합니다.
String buffer = "GET ";
buffer += PAGE;
buffer += "?sensor=";
buffer += sensor;
buffer += "&&unit=";
buffer += unit;
buffer += "&&value=";
buffer += charBuffer;
buffer += "&&pass=";
buffer += " HTTP/1.1\r\n";
buffer += "Host: ";
buffer += SERVER;
buffer += ":80\r\n\r\n";
while (!client.connected()){
Connect();
}
client.println(buffer);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다