2012-08-16 115 views
-2

我有一个表单将信息发送到api并获得XML格式的响应。我需要知道什么是记录/解析结果(文本文档或其他)的最佳方式。如果可能的话,我希望所有回复都保存在一个文档中,而不是每个结果的单个文档。将XML结果保存到文档或数据库中

我使用AJAX POST方法,并在结果代码需要的localproxy代码如下

<?php 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, 'http://integrate.com/api/test.ashx'); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $_POST); 
curl_setopt ($ch, CURLOPT_POST, 1); 
$result = curl_exec ($ch); 
curl_close($ch); 

file_put_contents('mydata.xml', $result, FILE_APPEND); 

die('<h1>Thanks!</h1>'); 

?> 

的XML数据来自于以下

<result> 
<success>0</success> 
<leadid/> 
<errors> 
<error>Missing Field: </error> 
</errors> 
</result> 

文件获取格式创建而现在它有内容,这是内容,这是一个错误

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd"> 

<HTML><HEAD><TITLE>Bad Request</TITLE> 

<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii"></HEAD> 

<BODY><h2>Bad Request - Invalid Content Length</h2> 

<hr><p>HTTP Error 400. There is an invalid content length or chunk length in the request.</p> 

</BODY></HTML> 

请问这个 意思? api服务器不接受请求吗?

+0

你正在寻找一种方法来解析XML?为此目的有很多基本的文档。有用的Google查询包括'php parse xml',它可以让您了解可用库的概况。 – 2012-08-16 23:11:22

回答

1

至于用于解析XML,使用XML parser

要保存文件的结果,追加每个结果到文件的末尾,你可以使用file_put_contents($filename, $data, FILE_APPEND)

例如

<?php 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, 'http://integrate.com/api/test.ashx'); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec ($ch); 
curl_close($ch); 
file_put_contents('mydata.xml', $result, FILE_APPEND); 
?> 

如果需要发送POST请求加:

curl_setopt ($ch, CURLOPT_POSTFIELDS, 'param=value&param=value'); // to be replace with valid query string 
curl_setopt ($ch, CURLOPT_POST, 1); 
+0

我不断收到错误日志错误“文件名不能为空”也将这个文件保存在localproxy.php相同的目录中,或者我必须选择吗? – user1532944 2012-08-17 00:07:10

+0

@ user1532944那么,指定一个文件名来摆脱错误。是的,它会将文件保存到同一个目录。 – mintobit 2012-08-17 00:11:05

+0

得到了这个,它应该被保存为一个.xml,因为这是它被发送的格式?它保存但包含0个数据,我在做其他事情吗? $ result = file_put_contents('mydata.xml',$ data,FILE_APPEND); 这是我的代码我现在有 – user1532944 2012-08-17 00:15:31