我的EPP XML请求有问题。我已经从API获得Command Syntax Error
响应已有一段时间了。我一直与技术部门保持联系,他刚刚回复说我的XML收到的格式不正确,正在中间拆分。我不知道为什么。
我使用DOMDocument
类将PHP编译为XML。我使用__toString()
返回每个XML构建方法,返回$this->saveXML();
,将树转储为字符串。然后我发送一个POST请求。其他方法都可以,但不是这样。
代码在这里:
https://github.com/OssiPesonen/epp_depo
我实际上使用以下方式转储我的XML:
header('Content-type: text/plain');
echo $xml;
die();
每次它都给我:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
<command>
<create>
<contact:create xmlns:contact="urn:ietf:params:xml:ns:contact-1.0">
<contact:id>1</contact:id>
<contact:role>5</contact:role>
<contact:type>1</contact:type>
<contact:postalInfo type="loc">
<contact:isfinnish>1</contact:isfinnish>
<contact:firstname>Essi</contact:firstname>
<contact:lastname>Esimerkki Oy</contact:lastname>
<contact:name>HR</contact:name>
<contact:org>Esimerkki Oy</contact:org>
<contact:birthDate>2005-04-03T00:00:00.0Z</contact:birthDate>
<contact:identity>123423A123F</contact:identity>
<contact:registernumber>20824760</contact:registernumber>
<contact:addr>
<contact:street>Test Street</contact:street>
<contact:pc>00000</contact:pc>
<contact:cc>FI</contact:cc>
<contact:city>City</contact:city>
</contact:addr>
</contact:postalInfo>
<contact:voice x="1234">+358401234567</contact:voice>
<contact:email>testi@testi.fi</contact:email>
<contact:legalemail>testi@testi.fi</contact:legalemail>
<contact:disclose flag="0">
<contact:addr/>
<contact:email/>
</contact:disclose>
</contact:create>
</create>
<clTRID>E1144-588371f25ab80</clTRID>
</command>
</epp>
这看起来不正常,对吗?然而,技术支持回应了我,在<contact:city>
之后在结束标记之前拆分:
contact:city>
<contact:sp>VA</contact:sp>
<contact:pc>20166-6503</contact:pc>
<contact:cc>US</contact:cc>
</contact:addr>
</contact:postalInfo>
<contact:voice x="1234">+3581231234</contact:voice>
<contact:fax>+04040as</contact:fax>
<contact:email>jdoe@example.com</contact:email>
<contact:legalemail>jdoe@example.com</contact:legalemail>
<contact:disclose flag="0">
<contact:addr/>
<contact:email/>
</contact:disclose>
</contact:create>
</create>
<clTRID>E1144-5867f93f6503a</clTRID>
</command>
</epp>
05-04-03T22:00:00.0Z</contact:birthDate>
<contact:identity>010188-123A</contact:identity>
<contact:registernumber>123456-7</contact:registernumber>
<contact:addr>
<contact:street>123 Example Dr.</contact:street>
<contact:street></contact:street>
<contact:street></contact:street>
<contact:city>Dulles</
任何可能导致此问题的想法?因为我看不到它。
修改
在用完我的选项后,我已将代码上传到Github进行查看。
答案 0 :(得分:0)
嗯,答案很简单,但我无法理解为什么它是解决方案。
我基本上从send()方法中删除了所有的失败者,只剩下这个:
private function send($buffer)
{
if(fwrite($this->socket, $buffer)) {
return true;
}
return false;
}
我真的不知道削减上一个XML字符串是什么,但这对我们的平台有用。