본문 바로가기
아두이노

아두이노 이더넷 클라이언트의 시작-#4

by 오징어땅콩2 2020. 6. 7.
반응형

이제 공부할것은 GET, POST 형식으로 전송하는 항수를 만들어야 한다.

우리는 단순하게 웹브라우즈에 붙여 넣기만 하면 GET이나 POST방식으로 전송된다.

그러나 패키분석기로 패킷을 잡아 보면 실제로 전송되는 문장은 좀 다르다.

미리 이야기 하지만 공백, 줄바꿈 하나라도 더 넣거나 덜 넣거나 하면 문장은 바로 오류를 발생한다.

그래서 정확한 형식을 알아야 한다. 

인터넷에 오류가 있는 문장도 많으니 정확한 문장을 찾거나 아래책을 보고 공부해야 한다.

괜히 인터넷에서 찾다가 시간 낭비하지 말기 바란다. 인터넷에 있는 문장중에 틀린게 상당히 있다.

 

http://www.yes24.com/Product/Goods/15894097

 

이제 GET 방식으로 요청을 할 것이다. 

먼저 이야기 하면 GET방식이 POST방식에 비해 느리고 보안에 취약하고 글자수도 제한 되고 좋지 않다.

그러나 쉽다는게 최대 장점이다.

그러면 본인은 POST방식으로 하면 될듯 하고 생각하겠지만,

대부분의 서버는 둘다 지원하지만 서버에 따라 지원하지 않을수도 있다.

그래서 둘다 알아야 한다.

 

아래 코드는 그냥 아주 직관적으로 만들어본 코드 이다.

너무 직관적이라서 별로 좋아 하지 않는다. 

그래도 처음하는 사람들은 눈을 익히기 위해서 유심히 보자.

그리고 아래의 약간 다른 표현도 보자. 

물론 다 이해 할수 있는 코드 이지만 2, 3번이 좋은 코드 이다.

 

void GET_Page1(EthernetClient& c)
{
  // if you get a connection, report back via serial:
  
  Serial.print("connecting to ");
  Serial.print("api.openweathermap.org");
  Serial.println("..."); 
  if (client.connect("api.openweathermap.org"80)) 
  { 
      Serial.println("connected to ");   
      String webpage;
      
      webpage  = "GET ";
      webpage += "/data/2.5/weather?id=1835235&APPID=1107a6df5ce46cce4179b4a66xxxx"
      webpage += " HTTP/1.1";
      webpage += "\r\n";  
      webpage += "Host: api.openweathermap.org\r\n"
      webpage += "Connection: close\r\n";  
      webpage += "\r\n\r\n";  
      Serial.println(webpage);      
      c.println(webpage);  
  }
  else 
  {
      // if you didn't get a connection to the server:
      Serial.println("connection failed");
  }    
    return ;
}
 


 

댓글