为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 C++ 服务器中解码 curl url 编码的字符串

如何在 C++ 服务器中解码 curl url 编码的字符串

PHP
泛舟湖上清波郎朗 2021-09-18 11:06:21
我正在使用 c++ pastiche rest api 库在 ubuntu linux 中制作一个 rest api。我已经让服务器正常工作了。我可以使用 php curl 将数据发布到我的服务器。服务器接收到数据,可以返回数据。问题是这个。当我使用 curl post 发布到服务器时,它以这样的 url 编码字符串将其发送到服务器name=percy&age=34&eye_color=blue。我需要知道如何在 C++ 中将每一个都放入一个字符串中。此外,字段之一也可能具有二进制数据以及普通字符串。我已经编写了解释二进制数据的代码,但我现在不知道如何从 curl post 转换字符串。请忽略我的端口在我的 php.ini 中不同的事实。原因是我在 virtualbox 中运行 ubuntu。我需要从我发送的帖子中提取字符串和二进制数据。这是我不知道该怎么做。我不确定我是否需要另一个图书馆来做到这一点这是我的 php 代码:-$postData = http_build_query(            array(                'dstdata' => 'hello',                'more' => 'test',                'age' => 34            )        );$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'localhost:9999/about');        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");        curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        $output = curl_exec($ch);        print_r($output);               curl_close($ch);上面的代码会生成一个这样的字符串 dstdata=hello&more=test&age=34这里是 C++ 服务器代码。你可以看到我在这里设置了两条路线:-#include <pistache/router.h>#include "pistache/endpoint.h"#include "pistache/http.h"#include <iostream>using namespace Pistache;using namespace Rest;Rest::Router router;void sausage(const Rest::Request& request, Http::ResponseWriter response){    std::cout << "We have contact" << std::endl;    response.send(Http::Code::Ok, "Bottoms Up\n");}void about(const Rest::Request& request, Http::ResponseWriter response){    std::cout << "Server Running" << std::endl;    response.send(Http::Code::Ok, request.body());}int main(){    Routes::Get(router,"/ready",Routes::bind(&sausage));    Routes::Post(router,"/about",Routes::bind(&about));    Pistache::Address addr(Pistache::Ipv4::any(), Pistache::Port(9080));    auto opts = Pistache::Http::Endpoint::options()        .threads(10).flags(        Pistache::Tcp::Options::ReuseAddr);    Http::Endpoint server(addr);    server.init(opts);    server.setHandler(router.handler());    server.serve();    return 0;}   
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 330 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信