我在<SIGNATURE>
标记中有一个xml文件,其中包含一个GPG签名。
这是xml:
$xml = "<DATA>
....
<SIGNATURE>-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
-----END PGP SIGNATURE-----
</SIGNATURE>
</DATA>";
当我使用perl发送此xml时,响应正常,远程主机接受签名。
但是如果我用php和cURL发送这个xml,远程服务器将解除签名。
下一个模块用于perl脚本:use URI (); use GnuPG qw( :algo ); use LWP::UserAgent (); use IO::Socket::SSL;
下一个cURL选项在php脚本中设置:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1);
我猜卷曲有问题......可能错过了卷曲设置,但我不知道哪个。我为urlencode
字符串尝试了qoutemeta
,$xml
个php函数,但没有结果。
答案 0 :(得分:0)
添加用户代理选项
curl_setopt($ ch,CURLOPT_USERAGENT,“Mozilla / 5.0(Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.1)Gecko / 2008070206 Firefox / 3.0.1”);
curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ ch,CURLOPT_URL,$ url);
curl_setopt($ ch,CURLOPT_POST,1);
curl_setopt($ ch,CURLOPT_POSTFIELDS,$ xml);
curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);