相关文章推荐
酷酷的电梯  ·  YUV 转 RGB 公式中,YUV ...·  1 年前    · 
腼腆的机器猫  ·  python ...·  1 年前    · 
千杯不醉的消炎药  ·  JUCE - OSCHINA - ...·  1 年前    · 
//赋值header值 headers = curl_slist_append(headers, "Host: 0xz.sz.qcloud.com" ); headers = curl_slist_append(headers, "yousa3: zym" ); //设置header curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

指定url

//声明url
string url = "http://10.54.69.29:80/test/usr/loveqiqian";
//指定url
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
//发送http请求
res = curl_easy_perform(curl);

设置HTTP请求的body

这里发送的请求是POST请求,通过如下代码设置的是POST请求
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");

如果没有指定contenttype,那么contenttype默认是post的标准表单格式,application/x-www-form-urlencoded

设置body是如下代码:

//先用char[] 准备好要发送的body字符串
char hello[12] = "a=hello";
//设置body长度以及内容
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(hello));
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, hello);
//然后就可以使用easy_perform接口发送了。

获取响应响应码

res获取到的就是HTTP响应码

res = curl_easy_perform(curl);

获取响应header以及响应body

string header ; string result; curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, & write_data); curl_easy_setopt(curl, CURLOPT_HEADERDATA, & header ); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, & write_data); curl_easy_setopt(curl, CURLOPT_WRITEDATA, & result); //write_data函数是这样 size_t write_data( void * buffer, size_t size, size_t nmemb, void * userp){ char * d = (char * )buffer; string * b = ( string * )(userp); int result = 0 ; if (b != NULL ){ b -> append(d, size * nmemb); result = size * nmemb; return result;

PS:HEAD请求的响应是没有body的,需要额外设置一行

curl_easy_setopt(curl, CURLOPT_NOBODY, 1);

#include <stdio.h>
#include <iostream>
#include <curl/curl.h>
#include <string.h>
using namespace std;
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp);
int main() {
    cout<<"hello world" << endl;
    CURL *curl;
    CURLcode res;
    curl = curl_easy_init();
    string url = "http://10.54.69.29:80/test/usr/loveqiqian";
    string header;
    string result;
    struct curl_slist *headers = NULL;
    char hello[12] = "a=hello";
    headers = curl_slist_append(headers, "Host: 0xz.sz.qcloud.com");
    headers = curl_slist_append(headers, "yousa3: zym");
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
    curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "POST");
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(hello));
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, hello);
    curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, &write_data);
    curl_easy_setopt(curl, CURLOPT_HEADERDATA, &header);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &write_data);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, &result);
    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);
    res = curl_easy_perform(curl);
    cout << header << endl << endl;
    cout << result << endl;
    cout << res << endl;
    curl_easy_cleanup(curl);
    return 0;
size_t write_data(void *buffer, size_t size, size_t nmemb, void *userp){
    char *d = (char*)buffer;
    string *b = (string*)(userp);
    int result = 0;
    if (b != NULL){
        b->append(d, size*nmemb);
        result = size*nmemb;
    return result;
                    代码简单解释设置header首先要声明header的结构体变量,然后设置对应header值,最后将其设置到curl结构体中//声明CURL *curl;struct curl_slist *headers = NULL;//赋值header值headers = curl_slist_append(headers, &quot;Host: 0xz.sz.qcloud.com&quot;);h...
				
关于libcurl的相关函数介绍以及参数详见官方说明 https://curl.haxx.se/libcurl/c/example.html 一、post / get其实也没啥特别区别,本质区别在于通常情况下post是发送两个TCP数据包一个是head确认完之后继续发一个data数据包,而GET直接发送head和data数据包,其次是写法不一样。 二、post/get参数获取返回js...
在工作中需要完成一个工具,该工具主要的用途就是向指定的服务器和端口发送http请求,为了提高性能,采用多线程的方式进行,同时采用libcurl的异步形式。代码如下,在其中添加一些注释来记录写代码中遇到的问题。#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <stdarg.h
首先我们创建一个php页面:<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <form action="#" method="post"> <input name="pass" type="text"></input> <input name="submit" type="submit" value="Login
接口说明使用步骤setopt函数部分选项说明示例写数据回调GET请求POST请求 libCurl一个多协议、跨平台的客户端URL传输库;使用libCurl可方便地进行HTTP请求libCurl提供easy interface和multi interface两种HTTP请求方式;本文主要是easy interface的使用说明。 使用步骤 libCurl主要采用Callback方式完成数据传输,设置好参数后和回调函数后,在满足条件时会自动调用相应的回调函数实现对应功能。一般按如下顺序调用: php中可以通过curl来模拟http请求,同时可以获取http response header和body,当然也设置参数可以只获取其中的某一个。当设置同时获取response header和body时候,它们会一同作为结果返回。这时需要我们自己来分离它们。 下面代码是模拟向google一个http GET请求 function ht
1         LibCurl简介 LibCurl是免费的客户端URL传输库,支持FTP,FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, FILE ,LDAP等协议,其主页是http://curl.haxx.se/。Libcurl具备线程安全、IpV6兼容、易于使用的特点。本文档主要介绍LibCurl在http协议方面的应用。 1.1HT
我可以为你提供一个使用libcurl一个文件下载的代码的例子:#include <stdio.h> #include <curl/curl.h>int main(void) CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "http://example.com/example.zip"); /* 设置文件保存到本地 */ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL); curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp); /* 执行下载 */ res = curl_easy_perform(curl); /* 检查错误 */ if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); /* 释放资源 */ curl_easy_cleanup(curl); return 0;