亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

?今天在想使用soap開發相關接口給合作的公司調用,但是遇到了這個錯誤。

?今天在想使用soap開發相關接口給合作的公司調用,但是遇到了這個錯誤。

PHP
森欄 2023-04-16 17:13:42
排查了很久,在google也查了很久,但都不是我所遇到的問題。不過我最終錯誤發現跟soapserver傳輸的數據量的大小有關系(不知道這個描述是否恰當)。當我從數據庫取10條數據,那么就可以很容易的使用soapclient獲取到數據,但是當我從數據庫里查詢1000條數據的時候就會報錯了(“Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document in……”)!如果我直接運行person.class.php程序是可以顯示完整的xml文檔的。這根服務器的環境配置會有關系嗎?我對于soap認識并不深,也只是現學現賣。希望有經驗的前輩們可以指點一二。多謝了!以下是我的程序代碼:<?php//person.class.php文件class person{  public function getInfo()  {   $strGetList = 'SELECT * FROM information LIMIT 100';   $GLOBALS['le']->query($strGetList);   $results = array();   $xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";   $xmlString .="<Data>\n";   while( $rows = $GLOBALS['le']->fetch_assoc() ) {   $results[] = $rows;   }   foreach($results as $key=>$val) {   $xmlString .="<Rec ID='UU{$key}'>\n";   foreach($val as $k=>$v ) {   if(strlen($v)>0) {   $v = htmlspecialchars($v);   $xmlString .=" <UU{$k}>$v</UU{$k}>\n";   }   }   $xmlString .="</Rec>\n";   }   $xmlString .="</Data>\n";   return $xmlString;  } }//$p = new person;//echo $p->getInfo();//經測試xml中可以顯示所有數據--- 分割線 ---<?php//server.php文件include("person.class.php");$server = new SoapServer(null,array('uri'=>'abcd','encoding'=>'UTF-8'));$server->setClass('person');$server->handle(); --- 分割線 ---<?php//client.php文件try{ $soap = new SoapClient(null,array( 'location'=>'http://192.168.1.126:102/server.php', 'uri'=>'abcd',  'encoding' => 'UTF-8', )); $s1 =$soap->__soapCall('getInfo',array()); echo $s1; } catch(Exction $e) { echo $e->getMessage(); }
查看完整描述

2 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

別用soap,把接口發給你的數據dump出來看看。估計是網絡傳輸出了啥問題,數據沒抓全,xml不完整,沒法解析。

查看完整回答
反對 回復 2023-04-20
?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

從SoapClient的異常"[Client] looks like we got no XML document"來看應該是響應有問題,所以首要的是查看響應消息是什么,有幾種方案可以協助你定位問題:

  1. 簡單一點的,你可以用SoapUI,查看響應是否真的有問題?是否沒有響應?

  2. Geek一點的,自制一個模擬客戶端來檢查響應消息,普通的SOAP協議并不難,只需用HTTP協議POST一小段XML給Server就行,代碼量應該在20行以內

  3. 我平時常用一點的,因為SOAP是走HTTP傳輸協議的,因此可以抓取整個HTTP Response,檢查其內容是否符合XML格式。抓取方式可以用tcpdump(Linux命令行)或HTTPTracer(Java跨平臺,使用方便,我的最愛)

  4. 直接一點的,查看SoapClient.php的源碼,我沒記錯的話代碼量挺小的,查找字符串“looks like we got no XML document”,然后往回找到XML解析那段,在解析前輸出原始內容看看到底響應內容出現了什么問題


查看完整回答
反對 回復 2023-04-20
  • 2 回答
  • 0 關注
  • 135 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號