4

私は C++ 開発が初めてで、libcurl を使用しようとしています。

基本的に、curl の -d フラグのようなパラメーターを入力できる関数を探しています。

たとえば、curl で URL リクエストを直接送信するか、Web ブラウザで送信すると、URL は「https://www.example.com/hello.json?whoisawesome=me&whosucks=yomomma」のようになります。

次に、この質問の受け入れられた回答で提案されているように、1つのURLとしてではなく、どうすればlibcurlにフィードできますか: Add paramethers to libcurl GET in c++

しかし、私が追加できるパラメータとして?呼び出しがテキストを自動的に「クリーンアップ」することを望んでいます (たとえば、文字列でアンパサンド (&) と等号 (=) をサポートするため)。他のケースもあると思いますが、今のところ思いつくのはこれだけです。 )。もちろん、文字列をクリーンアップする関数を自分で作成することもできますが、libcurl に組み込まれている関数があるかどうかを知りたいです。

私はAPIドキュメントをチェックしましたが、必要なものを見つけるためにナビゲートするのに十分な知識がなかったと思います.

御時間ありがとうございます

4

3 に答える 3

5
  1. 既に述べたように、GET パラメータを含む完全な URL は手動で作成する必要があります。
  2. 先頭または末尾のスペースの削除などのサニティ チェックは、libcurl の責任ではありません。
  3. パラメータの (サニタイズされた)値の部分を URL エンコードするには、 curl_easy_escapeを使用できます。肝心な部分はとにかく手元に置いておきましょう。
于 2016-07-22T00:16:46.513 に答える
1

できません。サーバー名だけでなく、スキーマ、パス、ポート、クエリ (GET パラメーター) も含まれていることを意味する完全な URL を指定する必要があります。これが、これを行う唯一の非フリークな方法だと思います。

于 2013-11-14T13:46:38.107 に答える
1

私はC++ 11で次のようなものを使用しています:

typedef std::map<std::string, std::string> Params;

static std::string params_string(Params const &params)
{
  if(params.empty()) return "";
  Params::const_iterator pb= params.cbegin(), pe= params.cend();
  std::string data= pb-> first+ "="+ pb-> second;
  ++ pb; if(pb== pe) return data;
  for(; pb!= pe; ++ pb)
    data+= "&"+ pb-> first+ "="+ pb-> second;
  return data;
}

// ...

auto str= get("where.com?"+ params_string({ {"q", "C++"}, { "img", "true" } }));

// lets you write pretty API clients
于 2013-11-14T14:06:18.283 に答える