C++ 访问http接口

论坛 期权论坛 脚本     
匿名网站用户   2020-12-21 09:08   46   0

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

附加库:#pragmacomment(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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:1136255
帖子:227251
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP