用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

回到顶部