libcurl HTTPS POST 数据发送?

2023-11-20

我有通过 HTTP POST 请求接收数据的应用程序。我正在尝试使用 libcurl 打开对此应用程序的请求,发送数据并接收从应用程序返回的回复。这是我到目前为止的代码:

int main(void)
{
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if(curl) 
    {
        const int timeout = 30000;
        char outputmessage[]="VGhpcyBpcyBqdXN0IGEgbWVzc2FnZSwgaXQncyBub3QgdGhlIHJlYWwgdGhpbmc=";

        curl_easy_setopt(curl, CURLOPT_URL, "https://somehost.com/someapp");
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
        curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.5");
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, outputmessage);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(outputmessage));
        curl_easy_setopt(curl, CURLOPT_POST, 1L);
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout/1000);

        res = curl_easy_perform(curl);
        if(CURLE_OK != res)
        {
            printf("Error: %s\n", strerror(res));
            return 1;
        }

        // now what?

        // cleanup when done
        curl_easy_cleanup(curl);
    }
    return 0;
}

这基本上连接到了服务器,我得到了 OKcurl_easy_perform()。我可以在 Wireshark 上看到连接。

两个问题:

1) 这是通过 POST 发送数据的正确方法吗?
2)如何得到申请的回复。

我想我需要使用curl_easy_recv()但我不明白怎么做。欢迎任何示例代码。 谢谢。


我认为您还应该考虑为响应标头添加处理程序:

cres = curl_easy_setopt( handle, CURLOPT_HEADERFUNCTION, HandleHeader );

如果这是一个设计供应用程序使用的 Web 服务,则其回复可能是仅标头回复,没有响应数据。标头将包含以下数据:

HTTP/1.1 200 OK ...

您要寻找的主要内容是200代码表示请求正常。

处理来自标头或响应的数据的函数应采用 void*,如果将其用作字符串,则需要以空值终止它。有关信息,这是我处理传入数据的方式(在这种情况下,我仅在应用程序中使用返回代码 - 响应正文仅转到日志文件):

static size_t CurlHandleResponse(
  void *Ptr,
  size_t Size,
  size_t NoElements,
  void* Data )
{
  memcpy( &( gData[gDataLen] ), Ptr, (Size * NoElements) );
  gDataLen += (Size * NoElements);
  gData[ gDataLen ] = '\0';
  return (Size * NoElements);
}

...
ConvertUnprintable( gData, PrintStr );
...

为了简洁起见,删除了错误处理!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

libcurl HTTPS POST 数据发送? 的相关文章

  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 从经典 ASP 调用 .Net C# DLL 方法

    我正在开发一个经典的 asp 项目 该项目需要将字符串发送到 DLL DLL 会将其序列化并发送到 Zebra 热敏打印机 我已经构建了我的 DLL 并使用它注册了regasm其次是 代码库这使得 IIS 能够识别它 虽然我可以设置我的对象
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 当文件流没有新数据时如何防止fgets阻塞

    我有一个popen 执行的函数tail f sometextfile 只要文件流中有数据显然我就可以通过fgets 现在 如果没有新数据来自尾部 fgets 挂起 我试过ferror and feof 无济于事 我怎样才能确定fgets 当
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • .user.ini 文件适用于子目录吗?

    是否 user ini控制文件夹特定 PHP 设置的文件也下降到子文件夹中吗 我正在阅读一些网站 他们建议这样做 尽管没有很多关于它的信息 但是我发现如果我从子文件夹运行脚本 它不会使用来自 user ini file 我是否遗漏了某些内容
  • nodejs如何从stdin读取击键

    是否可以在运行的 Nodejs 脚本中侦听传入的击键 如果我使用process openStdin 并聆听其 data 事件 然后输入被缓冲 直到下一个换行符 如下所示 stdin test js var stdin process ope
  • python 的 sys.stdin.read() 会阻塞吗?

    我正在适应这个 Django 管理命令为了我自己的目的 该脚本是一个简单的 while 循环守护进程 它从 sys stdin 读取 第 152 行 在command handle 根据协议并将结果写入 sys stdout 我希望sys
  • 方向更改后 UIView addsubview:告诉视图调整大小

    我有一个 UIView 作为纵向模式下的 XIB 该视图以编程方式添加到视图控制器中 如下所示 NSArray nibObjects NSBundle mainBundle loadNibNamed InputView owner self
  • MATLAB parfor 切片问题?

    我有一段代码可以在一系列图像中找到哈里斯角点 我需要对 92 张图像执行此操作 但速度相当慢 因此 我想并行运行代码 我下面的代码有一个与变量 corners 相关的错误 Harris corners max pts 900 corners
  • Facebook SDK 3.1 - 验证访问令牌时出错

    我正在尝试将我的应用程序转换到新的 Facebook SDK 3 1 支持 iOS6 身份验证 我让它运行得很好 所以我决定从 FB 网站上的授权应用程序列表中删除该应用程序 以测试 iOS 是否会再次请求许可 现在我第一次打电话给 FBR
  • 带有空标记的 Java StringTokenizer

    我有一个看起来像 56 0 76 0 93 1230 的字符串 我使用 StringTokenizer 将其分割为 然而 这似乎是从 93 直接跳到 1230 有没有办法让它在移动到 1230 之前返回六个空字符串 Use String s
  • std::move 的未定义行为

    来自移动页面cppreference 的 除非另有说明 所有标准库对象都具有 被移出的状态被置于有效但未指定的状态 那是 仅限没有前提条件的函数 例如赋值 操作符 可以在对象被移动后安全地使用它 因此 从同一页面上的示例来看 下面的代码被认
  • 错误:Android Pre Dex:未指定 Android SDK

    我已经下载了gdx setup jar从网站上 我将其运行为 java jar gdx setup jar 我选择我想要的选项并为其生成项目idea libgdx 1 6 2 当我单击生成按钮时 该工具不会向我抛出任何错误 当我跑步时ide
  • Firestore获取根集合的所有文档和子集合

    假设我有这种结构 A collection a doc name Tim B collection b doc color blue where A and B are 收藏品 while a and b are 文件 有没有一种方法可以通
  • 如何在 Matplotlib 中以 3D 形式绘制热图颜色

    I am using Matplotlib 3D to plot 3 dimensions of my dataset like below 但现在我还想将第四维 即 0 到 20 之间的标量值 可视化为热图 所以基本上 我希望每个点都根据
  • App Engine Java 11 无法在实时服务器上找到或加载主类

    tl dr 为什么这在本地有效 但在部署到实时 App Engine 项目时却无效 我正在尝试使用 Java 11 版本的 App Engine 创建一个基于 servlet 的准系统 Web 应用程序 我正在将一些项目从 Java 8 更
  • 如何在 multiautocompletetextview 中使用空间标记器(如 gmail 到 android 中的字段)正确添加和删除联系人气泡

    i am struggling alot with adding the Bubbles to to field like in gmail or facebook messanger please look into this pictu
  • Android“您需要将 Theme.AppCompat 主题(或后代)与设计库一起使用”

    好的 我收到此错误 标题 很多帖子建议我 甚至Android studio 更改主题 更改为App Appcompat 我已经做到了 清单文件
  • PHP - json_encode(string, JSON_UNESCAPED_UNICODE) 不转义捷克字符

    我从数据库中选择一些数据并将它们编码为 json 但我遇到了捷克符号的问题 例如 我的文件采用utf 8编码 我的数据库也是utf 8编码 我也将标头设置为utf 8编码 请问我还应该做什么 My code header Content T
  • VS2015企业版中出现错误C4576

    我有错误C4576在 Visual Studio 2015 中 当我尝试编译文件 transcoding c 时 该文件的源代码在这里 转码 c 错误 C4576 带括号的类型后跟初始值设定项列表是非标准显式类型转换语法 错误出现在该指令的
  • 列出 git-ls-remote 时为什么标签名称后面有“^{}”? [复制]

    这个问题在这里已经有答案了 当我跑步时git ls remote在工作树中 该命令输出原始存储库中的修订列表 由于某种原因 我对每个标签进行了 2 个修订 对于同一标签的第二个修订 标签名称包括 git ls remote From ema
  • 中断等待阻塞操作的线程?

    我正在运行一个线程 其主要操作是使用阻塞函数调用代理 并等待它给它一些东西 我已经使用了 挥发性布尔值 和 Interruption 的已知模式 但我不确定它是否会起作用 当我尝试添加 catch 块时InterruptedExceptio
  • 使用 GitHub API 下载文件时解码 base64

    我正在使用 GitHub API 从 GitHub 下载文件 我已经能够成功进行身份验证并从 github 获得响应 并看到表示文件内容的 Base64 编码字符串 不幸的是 在解码 Base64 字符串时出现了异常错误 字符串长度不是 4
  • libcurl HTTPS POST 数据发送?

    我有通过 HTTP POST 请求接收数据的应用程序 我正在尝试使用 libcurl 打开对此应用程序的请求 发送数据并接收从应用程序返回的回复 这是我到目前为止的代码 int main void CURL curl CURLcode re