C 언어 는 socket 으로 http post 방식 으로 json 데 이 터 를 업로드 합 니 다.

1. HTTP 프로 토 콜 에 따라 요청 을 보 냅 니 다. http POST 메시지 형식 http 메 시 지 는 텍스트 를 대상 으로 합 니 다.메 시 지 는 요청 메시지 와 응답 메시지 요청 메시지 로 나 뉜 다. 요청 줄, 요청 머리, 빈 줄 과 요청 데이터 네 부분 으로 구성 된다. <1. 요청 행 > POST: 클 라 이언 트 가 서버 에 정 보 를 많이 제공 할 때 POST 방법 을 사용 할 수 있 습 니 다. POST 방법 은 요청 파 라미 터 를 HTTP 요청 데이터 에 봉 하여 이름 / 값 으로 나타 나 대량의 데 이 터 를 전송 할 수 있 고 파일 을 전송 할 수 있 습 니 다. <2. 요청 헤드 >: 키워드 / 값 쌍 으로 구성 되 어 있 으 며, 줄 마다 한 쌍 씩 사용 합 니 다.: 구분, 요청 헤드 알림 서버 에 클 라 이언 트 요청 에 대한 정보 전형 적 인 요청 헤드 는 User - agent, Accept, Host, content - type, Content - Length 입 니 다. <3. 빈 줄 >: 마지막 요청 헤더 다음 에 빈 줄 입 니 다. 리 턴 문자 와 줄 바 꿈 문 자 를 보 내 고 서버 아래 에 요청 헤더 가 없 음 을 알려 줍 니 다.완 료 된 Http 요청 에 있어 서 빈 줄 은 필수 입 니 다. 그렇지 않 으 면 서버 는 이번 요청 의 데이터 가 서버 에 완전히 전송 되 지 않 았 다 고 생각 하고 대기 상태 에 있 습 니 다. <4. 요청 데이터 >: POST 방법 은 고객 이 양식 을 작성 해 야 하 는 경우 에 적 용 됩 니 다. 요청 데이터 와 관련 된 가장 자주 사용 하 는 요청 헤 더 는 content - type 과 Content - length 입 니 다.
예: POST URL HTTP / 1.1 HTTP 몇몇 옵션 \ r 빈 줄 \ r POST 데이터 세그먼트 (\ r 로 구분)
http 메시지 헤더: char * header = "POST / HTTP / 1.1" "Host: 192.168.9.20: 8080" "Content - Length: 62" "AuthenticateUser = UserID & AuthenticatePassword = PWD & Submit =";
 
2. 수요: 장치 엔 드 트리거 이벤트, 푸 시 메시지 API / icp / mesger. html? did = xx & dname = xx & dsname = xx & etype = xxx did --- > 장치 id 번호 dname --- > 내부 기기 이름 dsname --- > 외부 기기 이름 etype --- > 트리거 이벤트 의 분류
범례:http://push.iotcare.cn/icp/mesger.html?did=AIOT- 00001 - DTFBR & dname = 별장 1 & dsname = 대문 & etype = 0
 
3. 소프트웨어 구현:
snprintf(tmpBuf, sizeof(tmpBuf), "did=%s&dname=%s&dsname=%s&etype=%d&dsIndex=%d",
  pMsgInfo->szId,
  pMsgInfo->dname,
  pMsgInfo->dsname,
  pMsgInfo->eType,
  pMsgInfo->dsIndex);

snprintf(pOutBuf, sendLen, "POST /icp/mesger.html HTTP/1.1
" /*<1>. */   "Host: %s:%d
" /*<2>. */   "Content-Type: application/x-www-form-urlencoded
"   "Content-Length: %d\r
"   "\r
" /*<3>. */   "%s", /*<4>. */   pAddr,   PUSH_SERV_PORT,   strlen(tmpBuf),   tmpBuf); printf("send len:%d, cmd:
%s
", strlen(pOutBuf), pOutBuf);

 
4. 테스트 결과: POST / icp / mesger. html HTTP / 1.1 호스트: 47.74.191.223: 80Content - Type: application / x - www - form - urlencoded Content - length: 59
did=AIOT-000001-DTFBR&dname=RF&dsname=111&etype=5&dsIndex=0
 
참고 글:https://blog.csdn.net/mikewu_helloworld/article/details/52781675
 
다음으로 전송:https://www.cnblogs.com/liudeen/p/10154461.html

좋은 웹페이지 즐겨찾기