用xml文件创建php请求
我正在使用我的私人项目的网站服务。用xml文件创建php请求
我有一个XML文件,像这样的:
<Request Originator="xxxxx" Company="xxx"> <Range Code="xx">
<Item Id="xxxxxx-xxxxx-xxxxxx-xxx-7E8B94462F2C" />
</Range>
<KeyValues>
<Translations>
<Language Value="de" />
<Language Value="en" />
</Translations>
<Regions Show="true" />
<Towns Show="true" />
</KeyValues>
</Request>
编辑 所以对于我知道,直到今天:是一个我将请求发送到这个网址:http://interface.deskline.net/DSI/KeyValue.asmx?WSDL 与该服务器我进行通信,但始终得到此错误消息:
soap:ReceiverSystem.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Xml.XmlException: Data at the root level is invalid. Line 1, position 1. at System.Xml.XmlTextReaderImpl.Throw(Exception e) at System.Xml.XmlTextReaderImpl.ParseRootLevelWhitespace() at System.Xml.XmlTextReaderImpl.ParseDocumentContent() at System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.Read() at System.Xml.XmlReader.MoveToContent() at System.Web.Services.Protocols.SoapServerProtocolHelper.GetRequestElement() at System.Web.Services.Protocols.Soap12ServerProtocolHelper.RouteRequest() at System.Web.Services.Protocols.SoapServerProtocol.Initialize() at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing) --- End of inner exception stack trace ---1
我不明白它的沟通。这里是一个小的PHP代码,我写的:
$url = 'http://interfacetest.deskline.net/DSI/KeyValue.asmx'; $content = 0;
if (file_exists('/mm/request.xml')) {
$xml = fopen('/mm/request.xml', "r");
$content = fread($xml,filesize("/mm/request.xml"));
fclose($xml);
} else {
echo 'No file, no request';
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// Following line is compulsary to add as it is:
curl_setopt($ch, CURLOPT_POSTFIELDS,
"xmlRequest=" . $content);
$response = curl_exec($ch);
echo $response;
回答:
DOM文档的伟大工程操纵XML文档,例如:
$domd=new DOMDocument(); $domd->formatOutput=true;
$domd->loadXML($str,LIBXML_NOBLANKS);
$rangeele=$domd->getElementsByTagName("Range")->item(0);
for($i=0;$i<5;++$i){
$tmp=$domd->createElement("Item");
$tmp->setAttribute("Id",$i);
$rangeele->appendChild($tmp);
}
var_dump($domd->saveXML());
输出
... <Range Code="xx">
<Item Id="xxxxxx-xxxxx-xxxxxx-xxx-7E8B94462F2C"/>
<Item Id="0"/>
<Item Id="1"/>
<Item Id="2"/>
<Item Id="3"/>
<Item Id="4"/>
</Range>
...
报价how can I set up the communication between my server and theirs with php
- 即可以通过几种方式完成,具体取决于服务器支持的内容。最常用的方法是通过HTTP协议(其中的方式,是同样的协议Web浏览器主要使用与stackoverflow.com网站进行沟通),它可以像
$ch=curl_init('http://example.org/api'); curl_setopt_array($ch,array(CURLOPT_POST=>1,CURLOPT_HTTPHEADER=>array('Content-Type: application/xml'),CURLOPT_POSTFIELDS=>$xml));
curl_exec($ch);
curl_close($ch);
另一种流行进行沟通方法是使用TCP协议(其中HTTP协议是建立在顶部),可以像
$sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP); socket_connect($sock,"example.org",1337);
socket_write($socket,$xml);
socket_close($sock);
有大量的其他协议也OFC(and curl supports a great deal of them)来完成,但是这些是最常见的。再次,它真的取决于目标服务器支持什么,我们在SO不知道,问问你想与之通信的人。 (ps,在上面的例子中,我省略了错误检查,另外,我投下并投票结束,因为你的问题太简单,缺乏细节,你甚至不能解释你期望使用的协议。 I am trying for 2 hours to get this working but no luck.
那么,你有什么尝试?以及它是如何失败?)
以上是 用xml文件创建php请求 的全部内容, 来源链接: utcz.com/qa/265793.html