PHP cURL在下载的xml文件中添加随机字符

PHP cURL在下载的xml文件中添加随机字符,php,xml,curl,random,character-encoding,Php,Xml,Curl,Random,Character Encoding,我正在尝试使用PHP访问SOAP API,为此,我需要使用PHP cURL在我的计算机上下载WSDL描述文件的副本 这是我正在使用的代码: <?php $ch = curl_init(); $credit = ('some_username'.':'.'some_password'); curl_setopt($ch, CURLOPT_URL, 'https://somevalidaddress/file.asmx?WSDL'); curl_setopt($ch, CURLOPT_HTT

我正在尝试使用PHP访问SOAP API,为此,我需要使用PHP cURL在我的计算机上下载WSDL描述文件的副本

这是我正在使用的代码:

<?php

$ch = curl_init();
$credit = ('some_username'.':'.'some_password');
curl_setopt($ch, CURLOPT_URL, 'https://somevalidaddress/file.asmx?WSDL');
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $credit);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);


curl_close($ch);


$path = 'C:\Wamp\www\mmx\test2.xml';

file_put_contents($path, $data);

?>

test2.xml文件在第345行(总共684行)每次都包含一个随机字符(如ø、@或VT等)。此外,文件的最后一个字符是剥离的

我在谷歌上搜索了这件事,一个接一个地读到了错误和缓冲区溢出,但我仍然没有解决问题的办法

有什么想法吗?谢谢

使用这个怎么样:

$context = stream_context_create(array(
    'http' => array(
        'header'  => "Authorization: Basic " . base64_encode("$username:$password")
    )
));
$data = file_get_contents('https://somevalidaddress/file.asmx?WSDL', false, $context);

如果使用浏览器下载文件,问题是否仍然存在?如果是这样,那就是远程服务的问题。我用浏览器下载文件,然后用记事本++查看文件时没有问题。这样文件就很好了。另外请注意,当使用此API的测试服务时,cURL下载工作正常。可能是因为WSDL测试服务描述较短(68行)?如果allow_url_fopen=off呢?@Loïc刚刚尝试了它,现在它在文件末尾添加了一个随机字符(例如?)。这个文件仍然不能被PHP Soap类解析。那么在将最后一个字符提供给PHP Soap类之前去掉它?哈!你说得对,那应该行!但我希望我能像@baldrs所说的那样保持allow\u url\u fopen=off。有没有关于卷曲解决方案的想法?尝试从浏览器中添加更多的标题,可能还有一些cookie