4

我正在使用 cURL 进行 HTTP POST

$url = "http://localhost:8080/~demo/cgi-bin/execute/100";

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($data));
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);

//execute post
$result = curl_exec($ch);
echo("$result");
//close connection
curl_close($ch);

帖子被执行,但响应显示错误:

在此服务器上找不到请求的 URL /~demo/100


显然,上面的 URL 不存在于服务器,因为(不知何故)cURL 改变了 URL。

它应该是/~demo/cgi-bin/execute/100。此 URL 在浏览器中有效。

请告诉我为什么这样做?我怎么能阻止这个,我想要什么?

4

4 回答 4

2
  • 安装提琴手。
  • 启用调试。
  • 在浏览器中访问该站点。
  • 执行 php cURL 代码。

Fiddler 将准确地告诉您 Web 服务器正在接收和发送的内容。由于您在本地运行,因此您也可以准确地看到 php 发送的内容。比较两者,就会告诉你问题所在。

于 2009-02-02T22:25:26.370 回答
1

也许 cURL 尝试访问默认的 http 端口 80?尝试使用

curl_setopt($ch, CURLOPT_PORT, 8080)
于 2009-02-02T22:41:26.837 回答
0

更改 URL 的可能不是 cURL,而是 Web 服务器正在向 cURL 发送重定向标头,指向不同的位置。也许以下内容会有所帮助:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
于 2009-02-02T08:16:01.763 回答
0

哪里?

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
于 2009-03-12T05:12:10.887 回答