使用SOAP和PHP获取PDF文件

使用SOAP和PHP获取PDF文件,php,pdf,soap,Php,Pdf,Soap,编辑:这个问题无效,因为我使用的服务器突然过期。请忽略 我是PHP中SoapClient的新手,我正在尝试通过传递三个参数并获取结果来获取PDF。下面是我正在使用的WSDL文件(我对这部分没有太多/任何控制): 投入:无 输出:文本变量 这是我到目前为止得到的,只是返回404的: <?php header("content-type: application/pdf"); $client = new SoapClient('http://69.128.94.30:8080/4DS

编辑:这个问题无效,因为我使用的服务器突然过期。请忽略

我是PHP中SoapClient的新手,我正在尝试通过传递三个参数并获取结果来获取PDF。下面是我正在使用的WSDL文件(我对这部分没有太多/任何控制):


投入:无
输出:文本变量
这是我到目前为止得到的,只是返回404的:

<?php 

header("content-type: application/pdf");

$client = new SoapClient('http://69.128.94.30:8080/4DSOAP/');
$result = $client->WS_ME_StatementRequest(array('FuneralHomeID' => '0008-00', 'Month' => 11, 'Year' => "2008"));
$pdfdoc = $result->WS_ME_StatementResponse->StatementPDF;
print($pdfdoc);

乍一看,SoapClient url似乎是错误的。尝试:

$client = new SoapClient('http://69.128.94.30:8080/4DSOAP/'); 

看起来是base64编码的

header("content-type: application/pdf");

$client = new SoapClient('http://69.128.94.30:8080/4DSOAP/');
$result = $client->WS_ME_StatementRequest(array('FuneralHomeID' => '0008-00', 'Month' => 11, 'Year' => "2008"));
echo base64_decode($result->WS_ME_StatementResponse->StatementPDF);

我无法测试这一点,因为我无法访问您的web服务(将其粘贴到浏览器中,并显示其已过期),但我相信您需要在标题中指定内容长度和配置

$length = strlen($pdfdoc);
header("Content-type: application/pdf");
header("Content-Length: $length");
header("Content-Disposition: attachment; filename=myfile.pdf");

啊,那是我把它改成测试后拷贝粘贴的错。可悲的是,这并没有改变任何事情。我在OP中修复了它。请尝试先将其写入文件。谢谢。你有没有试过?我只是试了一下,但似乎什么都没变。我没法收到过期信息。。尝试将其写入二进制文件!该过期消息看起来像是服务器错误。。您可能需要先仔细检查您没有查询过期产品;)请参阅:在your browser.yes中,自发布此消息后,服务器似乎已过期。好时机啊?不管怎么说,我更新了OP,告诉人们忽略这个问题,因为我们现在不能测试。
$length = strlen($pdfdoc);
header("Content-type: application/pdf");
header("Content-Length: $length");
header("Content-Disposition: attachment; filename=myfile.pdf");