2011-07-26 17 views
3

私はcurlpp内のデータをWebスクリプトに投稿しようとしていますが、動作していないようです。 PHPの最後では、単にvar_dump($ _ POST)を実行します。受け取ったものをすべて印刷します。実行時に$ _POSTグローバルは空になります。次のようにcurl ++のPOSTデータは送信されません

私のC++のコードは次のとおりです。

std::stringstream out; 
    std::stringstream ss; 
    ss << "127.0.0.1/online.php"; 
    try 
    { 
      curlpp::Cleanup clean; 
      curlpp::Easy request; 
      curlpp::options::WriteStream ws(&out); 
      request.setOpt(ws); 
      request.setOpt<curlpp::options::Url>(ss.str()); 
      request.setOpt(new curlpp::options::Verbose(true)); 
      std::list<std::string> header; 
      header.push_back("Content-Type: application/octet-stream"); 
      request.setOpt(new curlpp::options::HttpHeader(header)); 
      std::string test = "abcd=abcd"; 
      request.setOpt(new curlpp::options::PostFields(test)); 
      request.setOpt(new curlpp::options::PostFieldSize(test.length())); 
      request.perform(); 
    } 
    catch(curlpp::RuntimeError& e) 
    { 
      ss.str(""); 
      ss << "Error making request of type " << op << ": " << e.what(); 
      PrintError(ss.str()); 
      return ""; 
    } 
    std::cout << out.str() << std::endl; 

私はここで非常に明らかに何も悪いことをやっていますか?

答えて

0

content-typeが間違っている場合は、application/x-www-form-urlencodedを使用してください。 hereを参照してください。

+0

これは本当にありがとうございました! – Jeff

2

クライアントからサーバーへのアップロードの場合、standardは、コンテンツタイプがapplication/x-www-form-urlencodedまたはmultipart/form-dataのいずれかになるように指定します。 WebサーバーやPHPが標準に準拠しているため、コンテンツタイプをこの場合はapplication/x-www-form-urlencodedに変更する必要があります。

+0

上記に回答しましたが、説明に時間を割いていただきありがとうございます。コンテンツタイプ指定子がなければ、それも動作していませんでした。何らかの理由で、私はそれが動作しているものにデフォルトすると仮定していました。 – Jeff

関連する問題