管理対象C++のアプリケーションから自分のWebサイトにログインしようとしています。私はこれを行うためにカールを使用していますが、私はエラーを受け取っていませんが、ログインが成功したかどうかを確認するために必要な情報を取得する方法を混乱させています。私は残念ながら私と同様の問題を持つ人を見つけることができませんでしたので、何か助けていただきありがとうございます。CURL(C++)を使用したフォーラムにログイン
private: System::Void bLogin_Click (System::Object^ sender, System::EventArgs^ e)
{
if (System::String::IsNullOrEmpty (tbUsername->Text))
{
System::String^ str = gcnew System::String ("Login failed! Please enter a valid username.");
System::Windows::Forms::MessageBox::Show (str);
return;
}
if (System::String::IsNullOrEmpty (tbUsername->Text))
{
System::String^ str = gcnew System::String ("Login failed! Please enter a valid password");
System::Windows::Forms::MessageBox::Show (str);
return;
}
using System::Runtime::InteropServices::Marshal;
curl_global_init (CURL_GLOBAL_ALL);
CURL* curl = curl_easy_init();
if (!curl)
{
curl_global_cleanup();
return;
}
curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, 1L);
curl_easy_setopt (curl, CURLOPT_SSL_VERIFYHOST, 1L);
curl_easy_setopt (curl, CURLOPT_USERAGENT, "Mozilla/4.0");
curl_easy_setopt (curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt (curl, CURLOPT_URL, "https://www.myurl.com/member.php?action=login");
const char* szUser = static_cast< const char* >(Marshal::StringToHGlobalAnsi (tbUsername->Text).ToPointer());
const char* szPass = static_cast< const char* >(Marshal::StringToHGlobalAnsi (tbPassword->Text).ToPointer());
curl_easy_setopt (curl, CURLOPT_POST, 1L);
curl_easy_setopt (curl, CURLOPT_POSTFIELDS, Fmt::Fmt ("username=%s&password=%s", szUser, szPass));
//curl_easy_setopt (curl, CURLOPT_USERPWD, Fmt::Fmt ("%s:%s", szUser, szPass));
std::string strData;
curl_easy_setopt (curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt (curl, CURLOPT_WRITEDATA, &strData);
CURLcode res = curl_easy_perform (curl);
/* its always CURLE_OK */
if (res != CURLE_OK)
{
System::Windows::Forms::MessageBox::Show ("A error has occured during the login process.");
}
Marshal::FreeHGlobal (System::IntPtr (reinterpret_cast< long long >(szUser)));
Marshal::FreeHGlobal (System::IntPtr (reinterpret_cast< long long >(szPass)));
/* check if suceeded here... but everything in strData is the same whether the credentials are right or wrong */
curl_easy_cleanup (curl);
curl_global_cleanup();
}
また、私のウェブサイトには「ワイルドカードSSL」が付属していますが、その点についてはわかりません。 私はこのすべてにかなり新しいので、何か間違っているとすみません。
私にはC++のようには見えません。 'System :: String^str = something'のように、'^'文字は算術演算子であり、コンパイラは構文エラーを投げられるはずです... – hanshenrik
それはC++で管理されています – Mike