php使用标头发出post请求

php使用标头发出post请求,php,post,curl,header,request,Php,Post,Curl,Header,Request,使用php,我需要调用webservice,在HTTP头中传递特定数据,在实际的POST字符串中传递特定数据。但是,当我访问此页面时,该页面会尝试下载。如果我打开下载的文件,它只包含我的两个s据我所知,应该回复 我是否正确地将标题“发送”到下面定义的url,还是应该以不同的方式执行 谢谢 <?php header("Content-Type: application/x-www-form-urlencoded"); header("Content-Length: ---"

使用php,我需要调用webservice,在HTTP头中传递特定数据,在实际的POST字符串中传递特定数据。但是,当我访问此页面时,该页面会尝试下载。如果我打开下载的文件,它只包含我的两个s据我所知,应该回复

我是否正确地将标题“发送”到下面定义的url,还是应该以不同的方式执行

谢谢

<?php 
    header("Content-Type: application/x-www-form-urlencoded");
    header("Content-Length: ---");
    header("Authorization: Basic -------");

try{

    $xml = "------";

    $url = 'https://---.com/---/---?site_id=---&service_name=---';

    $ch = curl_init($url);

    curl_setopt($ch, CURLOPT_POST, 1);

    curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);

    curl_close($ch);

    echo "!" . $response . "!";

} catch (Exception $e) {
    print_r($e);
}

?>

否。PHP
header()
调用将发出影响web服务器和浏览器之间连接的头。它不会以任何方式影响服务器使用curl创建的连接


默认情况下,当您告诉curl进行发布时,它会自动填充相应的内容类型标题,并且如果您同时进行文件上载,它会非常聪明地更改内容类型。要指定登录凭据,请使用
CURLOPT_USERPWD
(有关详细信息,请参阅)。

这似乎是一个https问题,可以通过以下方式解决:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

干杯

标题(“内容类型:application/x-www-form-urlencoded”)告诉浏览器您的响应具有该编码。看起来这就是为什么它拒绝显示它并提供下载的原因<与aha相比,code>header
设置的是响应头,而不是请求头,这与Marc B所说的也有道理。我已经取得了一些进展,现在从另一方得到了回应:)在Marc B让我在USERPWD上走上了正确的方向之后。。。我能够访问url并得到回复。。。这是一个错误。你的这篇文章,修正了新的错误!!!谢谢@亚当:在我写了回复后,我发现你的主要问题是什么,但马克更快了。我很高兴它毕竟奏效了。