精华内容
下载资源
问答
  • C++ post请求

    2020-08-12 18:37:04
    求一份c++ post源码,越简单越好的那种, 我就70分 悬赏了50 希望大佬们帮个忙,感谢了 我本地装的vs2019
  • 阅读本文前先看这篇文章:c++调用百度AI OCR SDK 一.鉴权认证机制 1.百度通用参考:鉴权认证机制 ...向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL

    阅读本文前先看这篇文章,有curl,openssl,jsoncpp的编译:c++调用百度AI OCR SDK ,本来百度是封装好了c++ SDK调用方法的,所以本文主要研究本质POST的用法。

    一.鉴权认证机制

    1.百度通用参考:鉴权认证机制

    简介

    本文档主要针对HTTP API调用者,百度AIP开放平台使用OAuth2.0授权调用开放API,调用API时必须在URL中带上access_token参数,获取Access Token的流程如下:

    获取Access Token

    请求URL数据格式

    向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:

    • grant_type: 必须参数,固定为client_credentials
    • client_id: 必须参数,应用的API Key
    • client_secret: 必须参数,应用的Secret Key

    例如:

    https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&c

    2.c++调用

    这里提供我的Key, token有一定的有效期,需要自行管理,当失效时需重新获取

    #include <iostream>
    #include <curl/curl.h>
    #include <json/json.h>
    #pragma warning(disable:4996)
    //#include "access_token.h"
    // libcurl库下载链接:https://curl.haxx.se/download.html
    // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
    // 获取access_token所需要的url
    const std::string access_token_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials";
    // 回调函数获取到的access_token存放变量
    // static std::string access_token_result;
    /**
     * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在result中
     * @param 参数定义见libcurl库文档
     * @return 返回值定义见libcurl库文档
     */
    static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
    	// 获取到的body存放在ptr中,先将其转换为string格式
    	std::string s((char *)ptr, size * nmemb);
    	// 开始获取json中的access token项目
    	Json::Reader reader;
    	Json::Value root;
    	// 使用boost库解析json
    	reader.parse(s, root);
    	std::string* access_token_result = static_cast<std::string*>(stream);
    	*access_token_result = root["access_token"].asString();
    	return size * nmemb;
    }
    
    /**
     * 用以获取access_token的函数,使用时需要先在百度云控制台申请相应功能的应用,获得对应的API Key和Secret Key
     * @param access_token 获取得到的access token,调用函数时需传入该参数
     * @param AK 应用的API key
     * @param SK 应用的Secret key
     * @return 返回0代表获取access token成功,其他返回值代表获取失败
     */
    int get_access_token(std::string &access_token, const std::string &AK, const std::string &SK) {
    	CURL *curl;
    	CURLcode result_code;
    	int error_code = 0;
    	curl = curl_easy_init();
    	if (curl) {
    		std::string url = access_token_url + "&client_id=" + AK + "&client_secret=" + SK;
    		curl_easy_setopt(curl, CURLOPT_URL, url.data());
    		curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
    		curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
    		std::string access_token_result;
    		curl_easy_setopt(curl, CURLOPT_WRITEDATA, &access_token_result);
    		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
    		result_code = curl_easy_perform(curl);
    		if (result_code != CURLE_OK) {
    			fprintf(stderr, "curl_easy_perform() failed: %s\n",
    				curl_easy_strerror(result_code));
    			return 1;
    		}
    		access_token = access_token_result;
    		curl_easy_cleanup(curl);
    		error_code = 0;
    	}
    	else {
    		fprintf(stderr, "curl_easy_init() failed.");
    		error_code = 1;
    	}
    	return error_code;
    }
    int main()
    {
    	std::string stToken;
    	get_access_token(stToken, "puMFv72xqCYV2jdcSlXgtFvm", "v5XHtqKXEm0p6ehPZrXIXrftDvocyv1m");
    	std::cout << "获取Token:" << stToken << std::endl;
    	 
    	return 0;
    }

    3.获取Token

    二、通用文字识别(标准版)

    1.百度AI OCR POST 请求:通用文字识别(标准版)

    请求说明

    请求示例

    HTTP 方法:POST

    请求URL: https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic

    URL参数:

    参数
    access_token 通过API Key和Secret Key获取的access_token,参考“Access Token获取

    Header如下:

    参数
    Content-Type application/x-www-form-urlencoded

    2.获取图片Base64

    我们把这张图片通过在线转换获取base64

    3.c++ POST方法

     建立ssl连接时出现以下错误。“对等证书不能使用已知的CA证书进行身份验证”

    先关闭证书的curl的验证
    curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,FALSE);

    #include <iostream>
    #include <curl/curl.h>
    #include <string>
    // libcurl库下载链接:https://curl.haxx.se/download.html
    // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
    const static std::string request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic";
    static std::string generalBasic_result;
    /**
    * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
    * @param 参数定义见libcurl文档
    * @return 返回值定义见libcurl文档
    */
    static size_t callback2(void *ptr, size_t size, size_t nmemb, void *stream) {
    	// 获取到的body存放在ptr中,先将其转换为string格式
    	generalBasic_result = std::string((char *)ptr, size * nmemb);
    	return size * nmemb;
    }
    /**
    * 通用文字识别
    * @return 调用成功返回0,发生错误返回其他错误码
    */
    int generalBasic(std::string &json_result, const std::string &access_token) {
    	std::string url = request_url + "?access_token=" + access_token;
    	CURL *curl = NULL;
    	CURLcode result_code;
    	int is_success;
    	curl = curl_easy_init();
    	if (curl) {
    		curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,FALSE);
    		curl_easy_setopt(curl, CURLOPT_URL, url.data());
    		curl_easy_setopt(curl, CURLOPT_POST, 1);
    		curl_httppost *post = NULL;
    		curl_httppost *last = NULL;
    
    		curl_formadd(&post, &last, CURLFORM_COPYNAME, "image", CURLFORM_COPYCONTENTS, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAUCAYAAAD4BKGuAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJzSURBVFhH7ZfbkcMgDEW3R3fiRtwHZdAFXbgDFpmXEJIsO85OZjYfdyYGR48jCZKfZVniV1RrdCFEt3J7dn3hclpdDPse9/01wF+4jFYXElgfN2ZP1eZjcGt7ZuDCSEDVqIizZKjtBRdXvEe0+W7Hb7C2RV+ecTCzUCx+y2vVb32muhAXrxxbjnNca3bPVPwOcDEEUTVgnIQ2Pm3EslrQhtHLHZTewZA0uMiXXjRZh8/B9hpXLr7Dl35sNLgDWCbwKdEBLv+d/r0QQ+lA3BHNpwqKJCDBfQBs7lAyodUunQIzXARqHAeqNKaewE3PeXS5M6qMUwrMFZDSuFG/IngWLhpbocgWgU82DgoWZIPLnGsWoSRrV9OOqesQcIVFg58mAtSKzRRsgvsMWIhj6vjDlwDQBlfuHlVDktUGhlGLltckuLi4Obn+zMYz+L3ZGFStmLNEJia49Uxhx1oR6SDcpXi/doMMt78LMTiuk7l323GkvHtBmx9BQbzq2W2CixJ7BW4rUkk0w+w2VbhoP0sJusXbpUK4oaNRzibhT+EmNYCugOb2pDFDx5MKi4ELku1eFECzTIIJbu24B+COic9jdgbB8g712zteT9SkgwXhUPxNBTfBfeRCq+vogiHVfxdczecl1Y5tzVY05EfeP4d788Zl4TIXW9H74IJe/znWJ8A4wTa46UMNOElNDAox/YmwJfNeuGg96d4FJ/zNlWSGm9QrxwSeNP3Y/zS4SS3GMxsX1G2Sjr4CFzQAlvTBcEE9Bz1xTbhI4hRIcFN89TsD3Cx0fmHRy+JD4Q53iBkwyRnZ7sW6qGSDgftPBUUzNopNS/wFOn1L0FSx0H8AAAAASUVORK5CYII=", CURLFORM_END);
    
    		curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
    		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback2);
    		result_code = curl_easy_perform(curl);
    		if (result_code != CURLE_OK) {
    			fprintf(stderr, "curl_easy_perform() failed: %s\n",
    				curl_easy_strerror(result_code));
    			is_success = 1;
    			return is_success;
    		}
    		json_result = generalBasic_result;
    		curl_easy_cleanup(curl);
    		is_success = 0;
    	}
    	else {
    		fprintf(stderr, "curl_easy_init() failed.");
    		is_success = 1;
    	}
    	return is_success;
    }
    
    int main()
    {
    	std::string stToken="24.adc315cddc50deb56f96fd35d60badf1.2592000.1621131811.282335-17594920";
    	/*get_access_token(stToken,"puMFv72xqCYV2jdcSlXgtFvm","v5XHtqKXEm0p6ehPZrXIXrftDvocyv1m");
    	std::cout << "获取Token:"<<stToken << std::endl;*/
    
    	std::cout << "开始OCR通用识别!" << std::endl;
    	std::string stBack;
    	generalBasic(stBack, stToken);
    	std::cout << "返回值:" << stBack << std::endl;
    	return 0;
    }

     

    4.识别效果

    项目案例下载:C++ POST请求调用百度AI OCR

    /**************************************************************************************************************************************************************************************************************************************/

     

    方法2:提供base64转换方法

    //#include <iostream>
    //#include <curl/curl.h>
    //#include <json/json.h>
    //#pragma warning(disable:4996)
    // 
     libcurl库下载链接:https://curl.haxx.se/download.html
     jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
     获取access_token所需要的url
    //const std::string access_token_url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials";
     回调函数获取到的access_token存放变量
     static std::string access_token_result;
    ///**
    // * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在result中
    // * @param 参数定义见libcurl库文档
    // * @return 返回值定义见libcurl库文档
    // */
    //static size_t callback(void *ptr, size_t size, size_t nmemb, void *stream) {
    //	// 获取到的body存放在ptr中,先将其转换为string格式
    //	std::string s((char *)ptr, size * nmemb);
    //	// 开始获取json中的access token项目
    //	Json::Reader reader;
    //	Json::Value root;
    //	// 使用boost库解析json
    //	reader.parse(s, root);
    //	std::string* access_token_result = static_cast<std::string*>(stream);
    //	*access_token_result = root["access_token"].asString();
    //	return size * nmemb;
    //}
    //
    ///**
    // * 用以获取access_token的函数,使用时需要先在百度云控制台申请相应功能的应用,获得对应的API Key和Secret Key
    // * @param access_token 获取得到的access token,调用函数时需传入该参数
    // * @param AK 应用的API key
    // * @param SK 应用的Secret key
    // * @return 返回0代表获取access token成功,其他返回值代表获取失败
    // */
    //int get_access_token(std::string &access_token, const std::string &AK, const std::string &SK) {
    //	CURL *curl;
    //	CURLcode result_code;
    //	int error_code = 0;
    //	curl = curl_easy_init();
    //	if (curl) {
    //		std::string url = access_token_url + "&client_id=" + AK + "&client_secret=" + SK;
    //		curl_easy_setopt(curl, CURLOPT_URL, url.data());
    //		curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
    //		curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
    //		std::string access_token_result;
    //		curl_easy_setopt(curl, CURLOPT_WRITEDATA, &access_token_result);
    //		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback);
    //		result_code = curl_easy_perform(curl);
    //		if (result_code != CURLE_OK) {
    //			fprintf(stderr, "curl_easy_perform() failed: %s\n",
    //				curl_easy_strerror(result_code));
    //			return 1;
    //		}
    //		access_token = access_token_result;
    //		curl_easy_cleanup(curl);
    //		error_code = 0;
    //	}
    //	else {
    //		fprintf(stderr, "curl_easy_init() failed.");
    //		error_code = 1;
    //	}
    //	return error_code;
    //}
    //int main()
    //{
    //	std::string stToken;
    //	get_access_token(stToken, "puMFv72xqCYV2jdcSlXgtFvm", "v5XHtqKXEm0p6ehPZrXIXrftDvocyv1m");
    //	std::cout << "获取Token:" << stToken << std::endl;
    //	 //stToken = "24.adc315cddc50deb56f96fd35d60badf1.2592000.1621131811.282335-17594920"
    //	return 0;
    //}
    
    
    // base64转换
    #include "base64.h"
    #include <string>
    #include <iostream>
    #include "base64.h"
    #include <fstream>
    #include <stdlib.h>
    using namespace std;
    std::string GetBase64(std::string _filePath);
    
    // 通用识别
    #include <iostream>
    #include <curl/curl.h>
    #include <string>
    // libcurl库下载链接:https://curl.haxx.se/download.html
    // jsoncpp库下载链接:https://github.com/open-source-parsers/jsoncpp/
    const static std::string request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic";
    static std::string generalBasic_result;
    /**
    * curl发送http请求调用的回调函数,回调函数中对返回的json格式的body进行了解析,解析结果储存在全局的静态变量当中
    * @param 参数定义见libcurl文档
    * @return 返回值定义见libcurl文档
    */
    static size_t callback2(void *ptr, size_t size, size_t nmemb, void *stream) {
    	// 获取到的body存放在ptr中,先将其转换为string格式
    	generalBasic_result = std::string((char *)ptr, size * nmemb);
    	return size * nmemb;
    }
    /**
    * 通用文字识别
    * @return 调用成功返回0,发生错误返回其他错误码
    */
    int generalBasic(std::string &json_result, const std::string &access_token) {
    	std::string url = request_url + "?access_token=" + access_token;
    	CURL *curl = NULL;
    	CURLcode result_code;
    	int is_success;
    	curl = curl_easy_init();
    	if (curl) {
    		curl_easy_setopt(curl,CURLOPT_SSL_VERIFYPEER,FALSE);
    		curl_easy_setopt(curl, CURLOPT_URL, url.data());
    		curl_easy_setopt(curl, CURLOPT_POST, 1);
    		curl_httppost *post = NULL;
    		curl_httppost *last = NULL;
    		std::string stBase64 = GetBase64("CMYK 红.png");
    		curl_formadd(&post, &last, CURLFORM_COPYNAME, "image", CURLFORM_COPYCONTENTS,stBase64.c_str(), CURLFORM_END);
    
    		curl_easy_setopt(curl, CURLOPT_HTTPPOST, post);
    		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callback2);
    		result_code = curl_easy_perform(curl);
    		if (result_code != CURLE_OK) {
    			fprintf(stderr, "curl_easy_perform() failed: %s\n",
    				curl_easy_strerror(result_code));
    			is_success = 1;
    			return is_success;
    		}
    		json_result = generalBasic_result;
    		curl_easy_cleanup(curl);
    		is_success = 0;
    	}
    	else {
    		fprintf(stderr, "curl_easy_init() failed.");
    		is_success = 1;
    	}
    	return is_success;
    }
    
    std::string GetBase64(std::string _filePath)
    {
    	fstream f, f2;
    	f.open(_filePath, ios::in | ios::binary);//"c:\\ocr.jpg"
    	f.seekg(0, std::ios_base::end);
    	std::streampos sp = f.tellg();
    	int size = sp;
    	cout << size << endl;
    	char* buffer = (char*)malloc(sizeof(char)*size);
    	f.seekg(0, std::ios_base::beg);//把文件指针移到到文件头位置
    	f.read(buffer, size);
    	cout << "file size:" << size << endl;
    	string imgBase64 = base64_encode(buffer, size);
    	cout << "img base64 encode size:" << imgBase64 << endl;
    	f.close();
    
    	return imgBase64;
    }
    int main()
    {
    	std::string stToken="24.adc315cddc50deb56f96fd35d60badf1.2592000.1621131811.282335-17594920";
    	/*get_access_token(stToken,"puMFv72xqCYV2jdcSlXgtFvm","v5XHtqKXEm0p6ehPZrXIXrftDvocyv1m");
    	std::cout << "获取Token:"<<stToken << std::endl;*/
    
    	std::cout << "开始OCR通用识别!" << std::endl;
    	std::string stBack;
    	generalBasic(stBack, stToken);
    	std::cout << "返回值:" << stBack << std::endl;
    	getchar();
    	return 0;
    }
    
     
    //int main(int argc, char** argv) 
    //{	
    //	GetBase64("c:\\1.png");
    //}
    
     
    

     

    展开全文
  • C++实现POST请求

    2018-10-01 09:31:38
    如何用C++实现http post 请求 , 如何获取WEB服务器数据,如果处理数据,如何向WEB服务器返回数据等。
  • C++ 发送POST请求

    千次阅读 2013-10-29 21:12:06
    今天看了下关于MFC环境下的网络交互问题,发送POST请求的方法。在网上看了下别人的资料,在这里转载记录下,下面函数代码摘自CSDN论坛biweilun的帖子。 本来是想借用搜狗实验室的分析系统,想用post请求响应的php...

    今天看了下关于MFC环境下的网络交互问题,发送POST请求的方法。在网上看了下别人的资料,在这里转载记录下,下面函数代码摘自CSDN论坛biweilun的帖子。

    本来是想借用搜狗实验室的分析系统,想用post请求响应的php返回相应的结果,但是有跨域访问问题,无奈之下只好先把问题放放,等其他作业写完之后再来看看。


    #include "afxinet.h"
    
    /* 发送post请求
       第一个参数为URL头
       第二个参数为要post表单的内容
       第三个参数用于保存页面返回的信息
       第四个参数用于记录日志
    */
    bool PostContent(CString strUrl, const CString &strPara, CString &strContent, CString &strDescript)
    {                         
        try{
            strDescript = "提交成功完成!";
            bool bRet = false;
            CString strServer, strObject, strHeader, strRet;
            unsigned short nPort;
            DWORD dwServiceType;
            if(!AfxParseURL(strUrl, dwServiceType, strServer, strObject, nPort))
            {
                strDescript = strUrl + "不是有效有网络地址!";
                return false;
            }
            CInternetSession sess;//Create session
    
            CHttpFile* pFile;
    
            CHttpConnection *pServer = sess.GetHttpConnection(strServer, nPort);
            
    		if(pServer == NULL)
            {
                strDescript = "对不起,连接服务器失败!";
                return false;
            }
            pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,strObject,NULL,1,NULL,NULL,INTERNET_FLAG_EXISTING_CONNECT);
            if(pFile == NULL)
            {
                strDescript = "找不到网络地址" + strUrl;
                return false;
            }
    
    		CString strHeaders = _T("Content-Type:application/x-www-form-urlencoded;Access-Control-Allow-Origin:http://www.sogou.com");
            pFile -> SendRequest(strHeaders, (LPTSTR)(LPCTSTR)strPara, strPara.GetLength());
    
            CString strSentence;
            DWORD dwStatus;
            DWORD dwBuffLen = sizeof(dwStatus);
            BOOL bSuccess = pFile->QueryInfo(
                HTTP_QUERY_STATUS_CODE|HTTP_QUERY_FLAG_NUMBER,
                &dwStatus, &dwBuffLen);
    
            if( bSuccess && dwStatus>=  200 && dwStatus<300)
            {
                char buffer[256];
                memset(buffer, 0, 256);
                int nReadCount = 0;
                while((nReadCount = pFile->Read(buffer, 2048)) > 0)
                {
                    strContent += buffer;
                    memset(buffer, 0, 256);
                }
                bRet = true;
            }
            else
            {
                strDescript = "网站服务器错误" + strUrl;
                bRet = false;
            }
            
            pFile->Close();
            sess.Close();
            return bRet;
        }
        catch(...)
        {
            int nCode = GetLastError();
            strDescript.Format("向服务器post失败!错误号:%d", nCode);
            return false;
        }
    }



    展开全文
  • C++ post方式请求网页

    千次阅读 2015-04-30 20:12:46
    C++post方式向页面发送数据,用于记录程序中的一些操作。

    C++post方式向页面发送数据,用于记录程序中的一些操作。

    bool PostHttpPage(const std::string& hostName, const std::string& pathName, const std::string& postData)
    {
        using namespace std;
    
        CInternetSession session(_T("your app agent name"));
    
        try
        {
            INTERNET_PORT nPort = 80;
            DWORD dwRet = 0;
            CHttpConnection* pServer = session.GetHttpConnection((LPCTSTR)hostName.c_str(), nPort);
            CHttpFile* pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, (LPCTSTR)pathName.c_str());
    
            CString strHeaders = "Content-Type: application/x-www-form-urlencoded"; // 请求头
    
            //开始发送请求
    
            pFile->SendRequest(strHeaders, (LPVOID)postData.c_str(), postData.size());
            pFile->QueryInfoStatusCode(dwRet);
    
    
            if (dwRet == HTTP_STATUS_OK)
            {
                CString result, newline;
    
                while (pFile->ReadString(newline))
                {//循环读取每行内容
                    result += newline + "\r\n";
                }
    
                std::cout << result << std::endl;//显示返回内容
            }
            else
            {
                return false;
            }
            delete pFile;
            delete pServer;
    
        }
        catch (CInternetException* pEx)
        {
            //catch errors from WinInet
            TCHAR pszError[200];
            pEx->GetErrorMessage(pszError, 200);
    
            std::cout << pszError << std::endl;//显示异常信息
            return false;
        }
        session.Close();
    
        return true;
    }

    测试程序

    int main(void)
    {
    
        Json::Value parameter,content;
        parameter["Logstore"] = "test";
        content["name"] = "22";
        content["act"] = "222222";
        parameter["Content"] = content;
        parameter["Topic"] = "testtest";
        std::string param = "parameter=" + parameter.toStyledString();
        PostHttpPage("127.0.0.1", "/index.php?c=index&a=addlog", param);
    }
    展开全文
  • c++ 发送post请求

    2016-11-02 16:40:20
    大家好,可否利用下面的信息,写个post请求,谢谢 头信息: Accept: application/json, text/javascript, */*; q=0.01 Content-Type: application/x-www-form-urlencoded;charset=utf-8 X-Requested-With: ...
  • C++实现HTTP的GET,POST请求及HTTPS的请求
  • C++ GET和POST请求

    2020-12-05 23:21:11
    步骤: 下载项目zip包 把源文件导入项目文件夹下 3.... ... 4 ....C/C++->预编译头->不使用预编译头 关闭安全警告:项目->属性->C/C++->预处理器->预处理器定义->添加 _CR...
    1. 一 使用的大佬的第三方框架地址:https://github.com/lxwAsm/requests

    步骤:

    1. 下载项目zip包
    2. 把源文件导入项目文件夹下

               

         3.在编译器把下载源文件以“现有项”的方式导入源文件和头文件;

            

      4 .关闭预编译头:项目->属性->C/C++->预编译头->不使用预编译头
          关闭安全警告:项目->属性->C/C++->预处理器->预处理器定义->添加 _CRT_SECURE_NO_WARNINGS

     5 如果POST请求,参数为JSON,修改源文件类型,否则会报415参数类型错误:

          

      POST请求:

           

    GET请求:

    如果乱码需要转换GBK:

       string UtfToGbk(string strValue){
            int len = MultiByteToWideChar(CP_UTF8, 0, strValue.c_str(), -1, NULL, 0);
            wchar_t* wstr = new wchar_t[len + 1];
            memset(wstr, 0, len + 1);
            MultiByteToWideChar(CP_UTF8, 0, strValue.c_str(), -1, wstr, len);
            len = WideCharToMultiByte(CP_ACP, 0, wstr, -1, NULL, 0, NULL, NULL);
            char* str = new char[len + 1];
            memset(str, 0, len + 1);
            WideCharToMultiByte(CP_ACP, 0, wstr, -1, str, len, NULL, NULL);
            if (wstr) delete[] wstr;
            return string(str);
    }

     

     

    展开全文
  • C++使用curl发送post请求

    万次阅读 2019-10-11 10:54:26
    发送post请求代码如下: #include<iostream> #include<string> #include<curl\curl.h> using namespace std; //get请求和post请求数据响应函数 size_t req_reply(void *ptr, size_t size, size_t ...
  • C++通过HTTP请求Get或Post方式请求Json数据
  • 利用Boost::Asio库来实现Post/Get请求的发送。可以快速开发c++的http请求,访问以http为协议的服务器示例代码。
  • winhttp是windows网络库,要测试自己写的post请求是否有效,首先得在postman上面建立一个可用的接口。我的如下。 代码思路如下: 1、首先使用WinHttpCrackUrl拆解链接,后面会使用到拆解出来的信息。 2、再使用...
  • 本文只是记录作者学习c++ http已post请求发送数据 一 .首先要选择一个第三方库,我这里用的是 libcurl 1.下载curl源代码,下载地址:http://curl.haxx.se/download 我用的是7.26.0的版本(地址 ...
  • C++ socket发送POST请求

    千次阅读 2017-10-31 13:03:49
    // httpPost.cpp : Defines the entry point for the console application. //#include "stdafx.h" #include "stdio.h" #include #include #include #pragma comment(lib, "Ws2_3
  • C++ 之HTTP post请求

    千次阅读 2017-03-28 13:49:43
    一、建立会话(Session)对象:  CInternetSession mysession; 二、连接到Http服务器:  CHttpConnection*myconn=mysession.GetHttpConnection... 三、打开Http请求:  CHttpFile*myfile=myconn->OpenRequest
  • C++ Post/Get请求(Boost.Asio库)

    万次阅读 多人点赞 2017-03-21 10:06:57
    C++实现HTTP的Post/Get请求。代码跨平台。
  • C++ 实现 发送HTTP Get/Post请求

    万次阅读 热门讨论 2016-11-24 19:40:30
    1、简述最近简单看了一下关于HTTP请求方面的知识,之前一直用Qt来实现,有专门HTTP请求的QNetworkAccessManager类来处理,实现也比较简单,这里主要讲解一下用C++代码来实现HTTP 的Get/Post请求。 一个HTTP请求报文...
  • 请大佬指教小白 c++如何对一个api进行post带数据请求并接受返回值$
  • 最近在工作中,由于合作商只提供uRL,我这边需要通过HTTP请求Get或Post方式请求Json数据,然后解析JSON格式,解析json我使用的第三方库rapidjson。开发环境是64位win7,VS2015。
  • C++使用CURL库POST请求向服务器发送JSON数据-附件资源
  • C++实现Http Post请求

    2014-12-20 14:09:13
     strcat(send_str, "POST ");  strcat(send_str, api);  strcat(send_str, " HTTP/1.1\r\n");  strcat(send_str, "Host: ");  strcat(send_str, hostname);  strcat(send_str, "\r\n");  strcat...
  • c++ 实现 http get post 请求

    千次阅读 2017-07-21 16:14:28
    1)http协议的请求方法有:get,post ,head,put,delete,options,trace,connect; 常用的是get,post; 2)bool getIPByDomainName(char *hosturl, char* ip) { WSADATA data; HOSTENT *hostent; int adapter = 0; struct ...
  • c++ 发送https POST请求并获取返回数据(包含appKey与appSecret)
  • C++ 简单实现HTTP GET/POST 请求 HTTP(超文本传输协议)是一种客户端与服务端的传输协议,最早用于浏览器和服务器之间的通信,后来因为其使用灵活、方便等特点,广泛用于客户端与服务端的通信。文章将简单...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 387
精华内容 154
关键字:

c++post请求

c++ 订阅