gsoap 처리 http post 와 http get
post:<form action="calc" method="post" name="Calc">
get:<form action="calc" method="get" name="Calc">
http_post,http_get 플러그 인 함수 gsoap 자체 post 와 get 플러그 인,경로:gsoap-2.8/gsoap/plugin/htppost.c httpget.c
두 파일 에서 두 가지 중요 한 함 수 를 정 의 했 습 니 다.httppost,http_get 이 두 함 수 는 플러그 인 으로 호출 되 는 데 사 용 됩 니 다.
gsoap 의 주 함수 에서 다음 과 같은 방법 으로 호출 합 니 다.
/* Register HTTP GET plugin */
if (soap_register_plugin_arg(&soap, http_get, (void*)http_get_handler))
soap_print_fault(&soap, stderr);
/* Register HTTP POST plugin */
if (soap_register_plugin_arg(&soap, http_form, (void*)http_form_handler))
soap_print_fault(&soap, stderr);
플러그 인의 역할 은 사용자 의 요청 이 POST 일 때 http 를 자동 으로 호출 하 는 것 입 니 다.form_handler,그렇지 않 으 면 http 호출get_handler
http_get_handler 와 httpform_handler 해석 요청 함수 중(void*)httpget_handler 와(void*)httpform_handler 는 사용자 정의 함수 가 필요 합 니 다.
int http_get_handler(struct soap*); /* HTTP get handler */
int http_form_handler(struct soap*); /* HTTP form handler */
이 두 함수 에서 사용자 의 요청 을 분석 해 야 합 니 다.사용자 가 요청 한 경로 가 무엇 입 니까?그 중에서 soap->path 는 경로 입 니 다.다음 코드 입 니 다.
if (!strcmp(soap->path, "/calc"))
return calcget(soap );
경로 가"/calc"이면 calcget 함수 처리 요청 을 호출 합 니 다.
위의 함수 calcget(soap)과 같은 처리 요청 함수
함수 가 httpform_handler 호출 은 함수 에서 form(soap)함수 로 사용자 요청 의 인 자 를 분석 해 야 합 니 다.
함수 가 httpget_handler 호출 은 함수 에서 query(soap)함 수 를 사용 하여 사용자 요청 의 인 자 를 분석 해 야 합 니 다.
실례:
int calcpost(struct soap *soap)
{ int o = 0, a = 0, b = 0, val;
char buf[256];
char *s = form(soap); /* get form data from body */
while (s)
{ char *key = query_key(soap, &s); /* decode next key */
char *val = query_val(soap, &s); /* decode next value (if any) */
if (key && val)
{ if (!strcmp(key, "o"))
o = val[0];
else if (!strcmp(key, "a"))
a = strtol(val, NULL, 10);
else if (!strcmp(key, "b"))
b = strtol(val, NULL, 10);
}
}
switch (o)
{ case 'a':
val = a + b;
break;
case 's':
val = a - b;
break;
case 'm':
val = a * b;
break;
case 'd':
val = a / b;
break;
default:
return soap_sender_fault(soap, "Unknown operation", NULL);
}
soap_response(soap, SOAP_HTML);
sprintf(buf, "<html>value=%d</html>", val);
soap_send(soap, buf);
soap_end_send(soap);
return SOAP_OK;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.