C语言访问webservice小例子

前端之家收集整理的这篇文章主要介绍了C语言访问webservice小例子前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

C语言访问webservice小例子

近期做的一个项目中,需要访问webservice获取一些json格式的数据。返回的页面内容只是json格式的数据,并不像实际页面那么复杂。所以不想再引入工具库,直接用socket简单实现了。 以下代码并不是实际项目源码,是我摘取出来整理成的一个小例子分享给大家。代码本身很容易理解,但是需要一些socket编程和http协议基础。 #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <errno.h> #include <time.h> int main() {     int sockfd = 0;     struct sockaddr_in ser_addr;     char url[1024] = {0};          //请求缓冲区     char recvbuff[4096] = {0};     //接收缓冲区     char *data = NULL;                   struct timeval time = {5,0};     int ret = 0;     //填充webservice主机信息     memset(&ser_addr,sizeof(ser_addr));     ser_addr.sin_family = AF_INET;     ser_addr.sin_port = htons(80);     ret = inet_pton(AF_INET,"127.0.0.1",&ser_addr.sin_addr.s_addr);     if (ret < 0)     {         perror("ERROR");         return -1;     }     if (ret == 0)     {         puts("ERROR:arguments error");         return -1;     }     //创建socket     sockfd = socket(AF_INET,SOCK_STREAM,0);     if(sockfd < 0)     {         perror("ERROR");         return -1;     }     //设置阻塞时间为5s     ret = setsockopt(sockfd,SOL_SOCKET,SO_RCVTIMEO,(const char*)&time,sizeof(time));     if (ret < 0)     {         perror("ERROR");         goto end;     }     //连接webservice     ret = connect(sockfd,(struct sockaddr *)&ser_addr,sizeof(struct sockaddr));     if(ret != 0)     {         perror("ERROR");         goto end;     }     //填充请求url 请求头部其他属性自行添加。每行以换行加回车结束     snprintf(url,sizeof(url),"GET /test HTTP/1.0\r\n\r\n");     //发起http请求     ret = send(sockfd,url,strlen(url),0);     if (ret < 0)     {         perror("ERROR");         goto end;     }     puts("send success");     //页面返回     ret = recv(sockfd,recvbuff,sizeof(recvbuff),0);     if (ret < 0)     {         perror("ERROR");         goto end;     }     puts("recv success");     //解析返回页面,将data指针指向数据主体     data = strstr(recvbuff,"\r\n\r\n");     data += 4;     //打印页面     if (data != NULL)     {         puts(data);     } end:     close(sockfd);     return 0; } 原文地址:https://segmentfault.com/a/1190000003007142

猜你在找的WebService相关文章