C语言访问webservice小例子
来源:互联网 发布:ug四轴联动编程实例 编辑:程序博客网 时间:2024/05/16 09:46
C语言访问webservice小例子
以下代码并不是实际项目源码,是我摘取出来整理成的一个小例子分享给大家。代码本身很容易理解,但是需要一些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, 0, 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
阅读全文
0 0
- C语言访问webservice小例子
- C语言小例子
- c 语言线程小例子
- C语言 经典小例子
- c语言访问mysql 完整例子
- c语言访问mysql 完整例子
- Android 访问C#.Net Webservice (简单例子适合初学者)
- webservice 小例子
- axis2 webservice 小例子
- java webservice小例子
- 调用WebService 小例子
- WebService测试小例子
- webservice小例子
- WebService 简单小例子
- webService的小例子
- C语言操作MYSQL小例子
- C语言中dlsym的小例子
- C语言操作MYSQL小例子
- mysql唯一索引的一个小常识--Duplicate entry 'XXX' for key 'XXX'
- vue-router菜鸟进阶!(重定向和别名)
- Cannot determine embedded database driver class for database type NONE
- BZOJ3594 [Scoi2014]方伯伯的玉米田
- HDU3549 Flow Problem
- C语言访问webservice小例子
- String类的常用方法总结
- Git教程——入门基础
- [2017纪中11-8]好文章 字符串hash+STL
- Airkiss技术java方法实现
- 从数据库获取 10 条随机数据
- PHP连接数据库方法
- NOIP加油!
- 经典JS代码语句