C++ 访问http接口

添加头文件#include <wininet.h>

附加库:#pragma comment(lib,"Wininet.lib")


// 发送
int GetURLInternal(LPCSTR lpszUrl, std::string& content)
{
	int result = -1;
	HINTERNET hSession = InternetOpenA(NULL,	INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
	if (NULL != hSession)
	{
		HINTERNET hHttp = InternetOpenUrlA(hSession,	lpszUrl, NULL, 0, 
			INTERNET_FLAG_DONT_CACHE|INTERNET_FLAG_RELOAD|INTERNET_FLAG_NO_CACHE_WRITE, 0);
		if (NULL != hHttp)
		{
			DWORD num = 0;
			const DWORD BUFFER_SIZE = 8192;
			char buffer[BUFFER_SIZE];
			do
			{
				if(InternetReadFile(hHttp, buffer, BUFFER_SIZE, &num))
				{
					content.append(buffer, num);
					result = 0;
				}
			} while (num > 0);
			InternetCloseHandle(hHttp);
			hHttp = NULL;
		}

		InternetCloseHandle(hSession);
		hSession = NULL;
	}
	return result;
}

// 中文要进行URL编码
std::string urlencode(std::string &str_source)  
{  
	char const *in_str = str_source.c_str();  
	int in_str_len = strlen(in_str);  
	int out_str_len = 0;  
	std::string out_str;  
	register unsigned char c;  
	unsigned char *to, *start;  
	unsigned char const *from, *end;  
	unsigned char hexchars[] = "0123456789ABCDEF";  

	from = (unsigned char *)in_str;  
	end = (unsigned char *)in_str + in_str_len;  
	start = to = (unsigned char *) malloc(3*in_str_len+1);  

	while (from < end) {  
		c = *from++;  

		if (c == ' ') {  
			*to++ = '+';  
		} else if ((c < '0' && c != '-' && c != '.') ||  
			(c < 'A' && c > '9') ||  
			(c > 'Z' && c < 'a' && c != '_') ||  
			(c > 'z')) {   
				to[0] = '%';  
				to[1] = hexchars[c >> 4];  
				to[2] = hexchars[c & 15];  
				to += 3;  
		} else {  
			*to++ = c;  
		}  
	}  
	*to = 0;  

	out_str_len = to - start;  
	out_str = (char *) start;  
	free(start);  
	return out_str;  
}  

// 得到post的字符串
int SendSMSCU(std::string strTelNum, std::string strSMSText){std::string strSmsRequest; // 请求std::string strSmsResponse; // 结果strSmsRequest = "http://js.ums86.com:8899/sms/Api/Send.do?SpCode=205395&LoginName=cs_rlzy&Password=csinfo2011&MessageContent=";strSmsRequest += urlencode(strSMSText);strSmsRequest += "&UserNumber=";strSmsRequest += strTelNum;strSmsRequest +="&SerialNumber=01234567890123456789&ScheduleTime=&f=1";GetURLInternal(strSmsRequest.c_str(), strSmsResponse);return 0;}


  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C post访问接口是一种HTTP请求方法,用于向服务器提交数据并创建新资源。当我们向服务器发送POST请求时,我们需要提供数据,并且该数据通常会被服务器存储在数据库中或通过其他途径进行处理。下面是关于C post访问接口的一些重要信息: 首先,C post访问接口是一种安全的HTTP请求方法,因为它可以确保数据的安全性。与GET请求不同,POST请求将数据包含在请求体中,而不是URL中,这意味着数据不会被暴露在URL上。这对于包含敏感信息的请求非常重要。 其次,C post访问接口可以用于创建新资源。通过将数据传递给服务器,我们可以在服务器上创建新的数据实体。例如,在一个博客网站中,我们可以使用C post访问接口来发布新的博客文章。 另外,C post访问接口通常需要使用表单数据格式进行请求。我们可以将数据通过表单进行封装,并将其发送到服务器,以便服务器可以正确地解析和处理数据。这对于处理用户的登录、注册或提交订单等操作非常有用。 最后,C post访问接口一般会返回一个响应,该响应包含了服务器对请求的处理结果。服务器可以返回各种不同的响应状态码,以指示请求的成功与否。客户端可以根据响应的状态码来采取不同的行动,例如,显示成功或错误消息。 总之,C post访问接口是一种重要的HTTP请求方法,可用于向服务器提交数据并创建新资源。它通过请求体传递数据,可以保证数据的安全性,并且通常需要使用表单数据格式进行请求。服务器对请求进行处理后会返回一个响应,供客户端判断请求的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值