繁体   English   中英

CURL发布数据问题

[英]Problem with CURL posting data

我会尽量简短。

我正在尝试将值发布到远程表单。

这段代码运行完美:

$url = "http://eirestudio.net/blog/"; // URL to POST FORM.

$post_fields = "s=test"; 

$ch = curl_init(); // Initialize a CURL session.
curl_setopt($ch, CURLOPT_URL, $url); // Pass URL as parameter.
curl_setopt($ch, CURLOPT_POST, 1); // use this option to Post a form
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); // Pass form Fields.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Return Page contents.
$result = curl_exec($ch); // grab URL and pass it to the variable.
curl_close($ch); // close curl resource, and free up system resources.
echo $result; // Print page contents.

但是,当我在另一个域上对其进行测试时,它失败了:

$url = "http://jobbank.fas.ie/servlet/Watis?SESS=50306_1&TEMPLATE=WWW_JS_VAC_TEXTSEARCH.HTM&BACK=TEMPLATE%3DWWW_JS_VAC.HTM"; // URL to POST FORM.

$post_fields = "TEXTSEARCH.JOBNAME=$search"; //

$ch = curl_init(); // Initialize a CURL session.
curl_setopt($ch, CURLOPT_URL, $url); // Pass URL as parameter.
curl_setopt($ch, CURLOPT_POST, 1); // use this option to Post a form
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); // Pass form Fields.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Return Page contents.
$result = curl_exec($ch); // grab URL and pass it to the variable.
curl_close($ch); // close curl resource, and free up system resources.
echo $result; // Print page contents.

您能发现第二段代码有什么问题吗?

更新:这是一个示例: http : //www.keithdonegan.com/labs/

更新2:实时HTTP标头

http://www.keithdonegan.com/labs/process.php

POST /labs/process.php HTTP/1.1
Host: www.keithdonegan.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.keithdonegan.com/labs/
Cookie: __utma=168444603.2571244565690463700.1247813169.1247813169.1247813169.1; __utmb=168444603.1.10.1247813169; __utmc=168444603; __utmz=168444603.1247813169.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Content-Type: application/x-www-form-urlencoded
Content-Length: 24
search=web&submit=Search
HTTP/1.x 200 OK
Date: Fri, 17 Jul 2009 07:02:17 GMT
Server: Apache/2.0.52 (Red Hat) PHP/4.4.7 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.5
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
----------------------------------------------------------
http://www.keithdonegan.com/watis1.css

GET /watis1.css HTTP/1.1
Host: www.keithdonegan.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)
Accept: text/css,*/*;q=0.1
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.keithdonegan.com/labs/process.php
Cookie: __utma=168444603.2571244565690463700.1247813169.1247813169.1247813169.1; __utmb=168444603.1.10.1247813169; __utmc=168444603; __utmz=168444603.1247813169.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
If-Modified-Since: Fri, 17 Jul 2009 06:46:20 GMT

HTTP/1.x 404 Not Found
Date: Fri, 17 Jul 2009 07:02:17 GMT
Server: Apache/2.0.52 (Red Hat) PHP/4.4.7 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.5
X-Pingback: http://www.keithdonegan.com/xmlrpc.php
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Last-Modified: Fri, 17 Jul 2009 07:02:17 GMT
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
----------------------------------------------------------
http://www.keithdonegan.com/pictures1/ndplogo.gif

GET /pictures1/ndplogo.gif HTTP/1.1
Host: www.keithdonegan.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.keithdonegan.com/labs/process.php
Cookie: __utma=168444603.2571244565690463700.1247813169.1247813169.1247813169.1; __utmb=168444603.1.10.1247813169; __utmc=168444603; __utmz=168444603.1247813169.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)

HTTP/1.x 404 Not Found
Date: Fri, 17 Jul 2009 07:02:17 GMT
Server: Apache/2.0.52 (Red Hat) PHP/4.4.7 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.5
X-Pingback: http://www.keithdonegan.com/xmlrpc.php
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Last-Modified: Fri, 17 Jul 2009 07:02:17 GMT
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
----------------------------------------------------------
http://www.keithdonegan.com/pictures1/eurologo.gif

GET /pictures1/eurologo.gif HTTP/1.1
Host: www.keithdonegan.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.keithdonegan.com/labs/process.php
Cookie: __utma=168444603.2571244565690463700.1247813169.1247813169.1247813169.1; __utmb=168444603.1.10.1247813169; __utmc=168444603; __utmz=168444603.1247813169.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)

HTTP/1.x 404 Not Found
Date: Fri, 17 Jul 2009 07:02:17 GMT
Server: Apache/2.0.52 (Red Hat) PHP/4.4.7 FrontPage/5.0.2.2635
X-Powered-By: PHP/5.2.5
X-Pingback: http://www.keithdonegan.com/xmlrpc.php
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Cache-Control: no-cache, must-revalidate, max-age=0
Pragma: no-cache
Last-Modified: Fri, 17 Jul 2009 07:02:18 GMT
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
----------------------------------------------------------

由于新知识而开始另一个答案。 我很无聊,决定去调查。 您的postvar必须包含所有输入字段,其中只有TEXTSEARCH.JOBNAME。 该网站必须全部要求它们,或者默认返回模板页面。

所以:

$search = 'plumber';
$post_fields = "TEXTSEARCH.JOBNAME=$search";

$post_fields .="&REQUEST.WWW_JS_VAC_TEXTSEARCH=Search";
$post_fields .="&TEXTSEARCH.DESCRIPTION= &TEXTSEARCH.LOCATION=";

如果您这样填写,那么您将获得一个包含“您的搜索得到x结果”之类的内容的响应

尝试在curopt_postfields内部传递所有post args。 您在网址中传递了一些

$url = "http://jobbank.fas.ie/servlet/Watis";
$post_fields = "TEXTSEARCH.JOBNAME=$search&SESS=50306_1&TEMPLATE=WWW_JS_VAC_TEXTSEARCH.HTM&BACK=TEMPLATE%3DWWW_JS_VAC.HTM";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM