通过POST将XML发送到另一台服务器

时间:2012-08-07 16:52:27

标签: php javascript xml post

我正在处理一个非常糟糕的API,需要我发送这个XML:

<?xml_version string(335) ""1.0" encoding="utf-16"?>
<GetTicketAction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <CompanyName>*name*</CompanyName>
    <IntegrationLoginId>*id*</IntegrationLoginId>
    <IntegrationPassword>*password*</IntegrationPassword>
    <SrServiceRecid>*recordId*</SrServiceRecid>
</GetTicketAction>

通过POST(作为actionString)到不受我控制的服务器。我用JavaScript(不能,跨脚本)和CURL(得到“这需要加密错误”)尝试过。文档中的任何地方都没有提到加密,它说可以使用“完全信任”在IE中使用JS来完成加密。

如果有帮助,内容类型为application/x-www-form-urlencoded

有没有办法用JS和/或PHP发送它?

1 个答案:

答案 0 :(得分:0)

经过多年痛苦的这个API慢慢让我疯狂,我发现它不希望我通过标准的CURL模式发送XML

$data = array(
    "actionString" => $xml
);

相反,我应该这样做:

$data = 'actionString=<?xml_version string(335) ""1.0" encoding="utf-16"?>
<GetTicketAction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <CompanyName>*name*</CompanyName>
    <IntegrationLoginId>*id*</IntegrationLoginId>
    <IntegrationPassword>*password*</IntegrationPassword>
    <SrServiceRecid>*recordId*</SrServiceRecid>
</GetTicketAction>'

未来的API编写者:让这成为一个警告。我真的希望一个疯狂的精神病患者知道这个人睡觉的地方。