我需要使用C ++和libcurl在网站上进行授权 网站有复杂的网址并使用https 网站返回表单
Login field:
<input type="text" maxlength="64" name="edit[id]" id="edit-id" size="60" value="" class="form-text required">
Password field:
<input type="password" name="edit[pass]" id="edit-pass" value="" maxlength="20" size="30" class="form-text required">
Submit button:
<input type="submit" name="op" value="Log in" id="account_login_submit" class="form-submit submit_button button" data-role="none">
当您输入正确的登录密码对时,网站会将您重定向到另一个页面,并在GET参数中使用&amp; token = ...代码
我目前的代码:
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "https://url/dialog/oauth?");
curl_easy_setopt(curl, CURLOPT_POST, 1);
curl_easy_setopt(curl, CURLOPT_VERBOSE, true);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "edit[id]=login&edit[pass]=password");
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
res = curl_easy_perform(curl);
char url[256];
curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &url);
printf("final [%s]\n");
}
现在它在CURLINFO_REDIRECT_URL中没有返回任何内容,并且在详细日志中返回表单的html代码
答案 0 :(得分:0)
首先,你使用curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL..)
错了,因为你应该传入指向char *
的指针,但你的代码会传入一个指向char缓冲区的指针。我现在在CURLINFO_REDIRECT_URL手册页中添加了一个示例,以便更好地展示它。
但最终您可能不应该使用此选项,因为它旨在显示它将重定向到的URL ,如果您没有要求libcurl重定向 - 并且您要求libcurl遵循重定向(使用CURLOPT_FOLLOWLOCATION)。
如果您想找出libcurl重定向到的网址,请改用CURLINFO_EFFECTIVE_URL。该页面还有一个示例(现在),以显示它是如何使用的。