linux下调CURL实现GET请求,并接收返回数据。。。100分送给你!

小菜菜__ 2013-03-25 04:56:12
RT。linux 下C编程实现,curl向服务器发送GET请求,并接受返回信息。就像在linux下直接敲命令:curl -G -d “test=string” http://ceshi.com:8383/test.aspx
一样的效果!谢谢啦,直接给demo,谁给直接全部分奉上!
...全文
32798 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
务虚的小刚 2015-06-09
  • 打赏
  • 举报
回复
楼主,我也遇到此问题了,但刚接触不怎么懂,能发给我个完整的demo, qq邮箱:835 767 589@qq.com,在此先谢谢了
longxingjian 2014-09-17
  • 打赏
  • 举报
回复
引用 楼主 zhu244912654 的回复:
RT。linux 下C编程实现,curl向服务器发送GET请求,并接受返回信息。就像在linux下直接敲命令:curl -G -d “test=string” http://ceshi.com:8383/test.aspx 一样的效果!谢谢啦,直接给demo,谁给直接全部分奉上!
你好,我现在遇到了同样的问题,可以互相交流一下,啊?
longxingjian 2014-09-17
  • 打赏
  • 举报
回复
引用 8 楼 kevin_zcwen 的回复:
你可以查一下curl参数的意思 -G 以GET的方式传送数据 -P 以GET的方式传送数据 上面 -d 添加传输的数据 你这条指令curl -G -d “test=string” http://ceshi.com:8383/test.aspx实际上是 以Get方式请求http://ceshi.com:8383/test.aspx,并传递参数test=string,curl会自动添加?到url中,类似你通过浏览器访问 http://ceshi.com:8383/test.aspx?test=string 所以楼上的代码需要你自己再手动改一下,直接

curl_easy_setopt(easy_handle,CURLOPT_URL,"http://ceshi.com:8383/test.aspx?test=string");
这样就可以了,注意自己添加一个数据回调或是文件指针

curl_easy_setopt(easy_handle, CURLOPT_WRITEFUNCTION, &ProcessData);
size_t ProcessData(void *buffer, size_t size, size_t nmemb, void *user_p) {
	//strcat((char *)user_p, (char *)buffer);
	cout << "nmemb: "<<nmemb<<", size: "<<size<<endl;
	fwrite(buffer, size, nmemb, g_pSaveData);
  return size * nmemb;
}
我现在就是遇到了这个问题,实际的网址中没有内容,要你说的那种http://ceshi.com:8383/test.aspx?test=string 形式才可以。 但是现在我想输入什么就显示什么,比如我输入aa,能上传到服务器,这个怎么做?
whrs7788 2014-07-28
  • 打赏
  • 举报
回复
我的curl_global_init(CURL_GLOBAL_ALL);直接段错误!!怎么回事啊!!有没有人遇到过!!
小菜菜__ 2013-03-26
  • 打赏
  • 举报
回复
引用 1 楼 nevil 的回复:
下载个libcurl库 C/C++ code?123456789101112131415161718192021222324252627282930313233int main(int argc, char **argv){ // 初始化libcurl CURLcode return_code; return_code = curl_global_in……
我也是按照您这样做的,但是我用curl命令和编程两种方式发到同一个服务器,怎么回的数据会不一样呢??有没有什么好的建议?我要如何去查到问题?
louyong0571 2013-03-26
  • 打赏
  • 举报
回复
curl 的网站上demo一找一大堆。
弱水垂钓 2013-03-26
  • 打赏
  • 举报
回复
楼上已给正解
小菜菜__ 2013-03-26
  • 打赏
  • 举报
回复
谢谢一二楼。
小菜菜__ 2013-03-26
  • 打赏
  • 举报
回复
引用 8 楼 kevin_zcwen 的回复:
你可以查一下curl参数的意思 -G 以GET的方式传送数据 -P 以GET的方式传送数据 上面 -d 添加传输的数据 你这条指令curl -G -d “test=string” http://ceshi.com:8383/test.aspx实际上是 以Get方式请求http://ceshi.com:8383/test.aspx,并传递参数test=stri……
是的,我后来就是直接
curl_easy_setopt(easy_handle,CURLOPT_URL,"http://ceshi.com:8383/test.aspx?test=string");
这样就可以了。
curl_easy_setopt(easy_handle,CURLOPT_URL,"http://ceshi.com:8383/test.asp");       
 curl_easy_setopt(curl, CURLOPT_HTTPGET, "?test=string"); 
这样对方是都没收到的。哎,还是知识掌握得不够透彻啊。
弱水垂钓 2013-03-26
  • 打赏
  • 举报
回复
你可以查一下curl参数的意思 -G 以GET的方式传送数据 -P 以GET的方式传送数据 上面 -d 添加传输的数据 你这条指令curl -G -d “test=string” http://ceshi.com:8383/test.aspx实际上是 以Get方式请求http://ceshi.com:8383/test.aspx,并传递参数test=string,curl会自动添加?到url中,类似你通过浏览器访问 http://ceshi.com:8383/test.aspx?test=string 所以楼上的代码需要你自己再手动改一下,直接

curl_easy_setopt(easy_handle,CURLOPT_URL,"http://ceshi.com:8383/test.aspx?test=string");
这样就可以了,注意自己添加一个数据回调或是文件指针

curl_easy_setopt(easy_handle, CURLOPT_WRITEFUNCTION, &ProcessData);
size_t ProcessData(void *buffer, size_t size, size_t nmemb, void *user_p) {
	//strcat((char *)user_p, (char *)buffer);
	cout << "nmemb: "<<nmemb<<", size: "<<size<<endl;
	fwrite(buffer, size, nmemb, g_pSaveData);
  return size * nmemb;
}
personball 2013-03-26
  • 打赏
  • 举报
回复
比较一下返回数据的差异,然后看看有没有相关的命令选项吧 以前用curl抓取网页代码,发现和浏览器看到的有一定差异,对于某些标签有处理过
落风gy 2013-03-26
  • 打赏
  • 举报
回复
小菜菜__ 2013-03-26
  • 打赏
  • 举报
回复
引用 2 楼 kevin_zcwen 的回复:
楼上已给正解
数据发不到对方那边啊?用楼上的方法。
nevil 2013-03-25
  • 打赏
  • 举报
回复
下载个libcurl库

int main(int argc, char **argv)
{
	// 初始化libcurl
	CURLcode return_code;
	return_code = curl_global_init(CURL_GLOBAL_ALL);
	if (CURLE_OK != return_code)
	{
		cerr << "init libcurl failed." << endl;
		return -1;
	}


	CURL *easy_handle = curl_easy_init();
	if (NULL == easy_handle)
	{
		cerr << "get a easy handle failed." << endl;
                  curl_global_cleanup(); 
		return -1;
	}


	curl_easy_setopt(easy_handle,CURLOPT_URL,"http://ceshi.com:8383/test.asp");
        curl_easy_setopt(curl, CURLOPT_HTTPGET, "?test=string");

    
	curl_easy_perform(easy_handle);	


	fclose(fp);
	curl_easy_cleanup(easy_handle);
	curl_global_cleanup();
	return 0;
}

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧