CURL URL с переменной C ++ - PullRequest
       99

CURL URL с переменной C ++

0 голосов
/ 23 апреля 2020

Так что я должен сделать что-то для школы. По сути, это то, что если кто-то вызывает мою программу, он задает ей вопрос, и он увидит, сможет ли он найти ответ о переполнении стека. У меня проблема в том, что мне нужно, чтобы URL CURL был податливым, потому что вы не знаете, какой вопрос он задает:

#include <stdio.h>
#include "curl/curl.h"
#include "json.hpp"
#include <string>
#include <iostream>
#include <fstream>
using namespace std;
using json = nlohmann::json;

int main()
{
        //this is the input from the user
        string question;
        cout << "Please Enter your Question Using EXACTLY 2 Words" << endl;
        getline(cin, question);

        //initiating the curl
        CURL *curl;
        CURLcode result;
        curl = curl_easy_init();


        if(curl)
        {
                curl_easy_setopt(curl, CURLOPT_URL, ("api.stackexchange.com/2.2/search?order=desc&sort=activity&intitle={question}&site=stackoverflow&filter=!)8aCqWxCWk*)CTW"));

                //follow URLS
                curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);

                //sets a waiting time before it times out waiting for a response form the website
                curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10);

                //decodes weird charcters
                curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "gzip");

                //actually getting the data
                result = curl_easy_perform(curl);

                //making sure that the curl is ok and worked right
                if(result != CURLE_OK)
                {
                        cout << curl_easy_strerror(result) << endl;
                        return 1;
                }
        }
        return 1;
}

, так что в конечном итоге он получит первый принятый принятый идентификатор затем найдите его, получите тело этого ответа и верните его пользователю в терминале. Я попытался сделать URL-адрес, подобный этому

string url = "api.stackexchange.com/2.2/search?order=desc&sort=activity&intitle=" + question + "&site=stackoverflow&filter=!)8aCqWxCWk*)CTW"

, но мне не нравится, что он говорит, что это плохой URL-адрес, но я могу заставить его распечатать его и вставить туда вручную, и он работает. Я также попробовал то, что вы видите в исходном коде, добавьте его с {}, это синтаксис, который использует веб-сайт. Это возвращает что-то из совершенно другого URL, который я даже не могу найти. Все, что я пробовал, либо перенаправляет меня на что-то совершенно другое, либо не работает вообще, и выдает неверный URL-адрес. Кто-нибудь знает, как можно сделать URL Malleable?

...