我正在寻找C语言中命令行curl的-d选项的等价物。
我想改写一下:
curl -d loginid="test" -d password="test" -d action="Login" somewebpage
我无法弄清楚这需要的C函数。
我实际上是这样做的:
curl_easy_setopt(curl, CURLOPT_URL, "webpage.com");
curl_easy_setopt(curl,CURLOPT_POSTFIELDS,login_data);
res = curl_easy_perform(curl);
login_data如下所示:
snprintf(login_data,100,"loginID=%s&password=%s",username,password);
我希望你能帮忙
问候和提前谢谢
答案 0 :(得分:2)
如果使用--libcurl
和文件名运行curl命令,它将使用文件中的libcurl保存命令的C代码。
curl --libcurl myprog.c -d loginid="test" -d password="test" -d action="Login" somewebpage
然后查看myprog.c:
/********* Sample code generated by the curl command line tool **********
* All curl_easy_setopt() options are documented at:
* http://curl.haxx.se/libcurl/c/curl_easy_setopt.html
************************************************************************/
#include <curl/curl.h>
int main(int argc, char *argv[])
{
CURLcode ret;
CURL *hnd;
hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_URL, "somewebpage");
curl_easy_setopt(hnd, CURLOPT_NOPROGRESS, 1L);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "loginid=test&password=test&action=Login");
curl_easy_setopt(hnd, CURLOPT_POSTFIELDSIZE_LARGE, (curl_off_t)39);
curl_easy_setopt(hnd, CURLOPT_USERAGENT, "curl/7.45.0");
curl_easy_setopt(hnd, CURLOPT_MAXREDIRS, 50L);
curl_easy_setopt(hnd, CURLOPT_TCP_KEEPALIVE, 1L);
/* Here is a list of options the curl code used that cannot get generated
as source easily. You may select to either not use them or implement
them yourself.
CURLOPT_WRITEDATA set to a objectpointer
CURLOPT_WRITEFUNCTION set to a functionpointer
CURLOPT_READDATA set to a objectpointer
CURLOPT_READFUNCTION set to a functionpointer
CURLOPT_SEEKDATA set to a objectpointer
CURLOPT_SEEKFUNCTION set to a functionpointer
CURLOPT_ERRORBUFFER set to a objectpointer
CURLOPT_STDERR set to a objectpointer
CURLOPT_HEADERFUNCTION set to a functionpointer
CURLOPT_HEADERDATA set to a objectpointer
*/
ret = curl_easy_perform(hnd);
curl_easy_cleanup(hnd);
hnd = NULL;
return (int)ret;
}
/**** End of sample code ****/