关于libcurl模拟提交form
Posted 编程老菜B
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于libcurl模拟提交form相关的知识,希望对你有一定的参考价值。
因为本人对web机制了解较少,在使用C/libcurl中遇到了很多问题。主要的解决方式:
1,在网页源码中找到提交form的定位。也就是网页文件对应form中的action属性。往往都是提交到jsp或者php等脚本中运行的,而不是直接提交到本网页。
2,要注意http头。http头的不同会引起网页的不同反应。我做的一个小项目,在提交到两个网址php脚本时,都因为http头引起php脚本执行不正确。
3,重定向问题。
在一些网页中,返回的网页数据会带有重定向信息,这时要打开curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true);
以我目前掌握的,这个参数会自动跟踪http头中的重定向。这里之所以要打开,是因为重定向有一个超时参数,如果未能链接,
也会导致网页执行出现问题。
4,关于https,在编译libcurl的时候要加入openssl的支持。
5,在代码中加入curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);可以追踪数据的传输状态。
6,如果还是解决不了,使用Fiddler抓包。相比wireshark,Fiddler抓取https的包更加方便和快捷。
最后再强调一下第六条:Fiddler可以更方便地抓https,通过比对包的不同可以轻松解决碰到的各种问题。
以上是关于关于libcurl模拟提交form的主要内容,如果未能解决你的问题,请参考以下文章
关于在Windows XP Server 2003下使用libcurl库的一些问题 附编译好的libcurl下载 和使用libcurl访问百度的例子工程