php 用nusoap調用 Java 的webservice
php.ini 的內存1024M ? java 1.5G
error: XML error parsing SOAP payload on line 1 : ?No memory
請問這個錯誤怎么修改?
尋找原因
nusoap_client 類 --> function call --> function send -> class soap_transport_http
////////////
$http->send($msg,$timeout,$response_timeout,$this->cookies); ? ?data
? $this->request = $http->outgoing_payload;
?$this->response = $http->incoming_payload;
///////////
-->nusoap_client 類中?parseResponse($data)? --> class nusoap_parser($data) ->
nusoap_parser(($xml)->? xml_parse($this->parser,$xml,true)
發現xml_parse 結果為false,發現問題。將$xml put 到文件里,文件名:xml.txt?大小10.7M
$xmlUrl = "./xml.txt";$xmlparser = xml_parser_create();
$data = file_get_contents($xmlUrl);
if(xml_parse($xmlparser, $data)){?
?? echo "1";
}else{? ??
? die( print "ERROR: "? ? . xml_get_error_code($xmlparser)? ? . "
"? ? . xml_error_string(xml_get_error_code($xmlparser))? ? . "
"? ? . "Line: "? ? . xml_get_current_line_number(? $xmlparser)? ? . "
"? ? . "Column: "? ? . xml_get_current_column_number($xmlparser)? ? . "
");
}
解決方案猜想:
1.設置xml parser 的內存?
2.修改nusoap文件:將nusoap關于解析XML的函數全部替換成其他解析方式
3.修改nusoap文件:將數據存入文件中,遍歷讀取數據!
4. nusoap ?換成 php的soap擴展
5.Java服務器傳輸數據格式為json
6.減小數據量 ?(是最簡單的,也是最沒用的)
先看看xml parser 是否有關于內存的配置
然后并沒有找到設置Xml parser 的內存的函數,無奈放棄!
但是2-3 實現起來太費時,決定用第四種方案!直接用php 的soap擴展取的數據。
哪位大神知道怎么設置xml parser的內存,記得留言啊。