2012-05-09 30 views
0

問題が見つかりました:応答の一部(メッセージ本文)に「」が含まれています。 は無効なXML文字です。任意のアイデアをどのようにそれを削除するには?EWSコールで特定の電子メールのみを取得できませんでした。

Exchange Webサービスを使用して、受信トレイから多数の電子メールを取得しています。それは最初の1141の電子メールのために働いたが、それは1142で失敗している(先行する1143にうまくいっていない)。私は電子メールを取得するために失敗している理由はわかりませんが、私は取得していますエラーはこれです:私は1142年と1143年のために、ファイルへの応答のXMLを出力し、そして唯一の違いは、ItemIdをラインだった

Uncaught SoapFault exception: [Client] looks like we got no XML document 

(予想通り)。

メールには奇妙な文字(奇妙な四角い記号で表される)が含まれていますが、受信トレイにはメールがあります。

私は、少し修正したphp-ewsライブラリを使用しています。ここに私のコードの一部です:

<?php 
$response = $ews->FindItem($Request); 
$items = $response->ResponseMessages->FindItemResponseMessage->RootFolder->Items->Message; 

foreach ($items as $item) { 
    $ItemRequest = new EWSType_FindItemType(); 

    $ItemRequest->ItemShape = new EWSType_ItemResponseShapeType(); 
    $ItemRequest->ItemShape->BaseShape = EWSType_DefaultShapeNamesType::ALL_PROPERTIES; 
    $ItemRequest->ItemShape->BodyType = EWSType_BodyTypeResponseType::TEXT; 
    $ItemRequest->ItemShape->BodyTypeSpecified = true; 

    $ItemRequest->ItemIds = new EWSType_NonEmptyArrayOfBaseItemIdsType(); 
    $ItemRequest->ItemIds->ItemId = new EWSType_ItemIdType(); 
    $ItemRequest->ItemIds->ItemId->Id = $item->ItemId->Id; 

    $response = $ews->GetItem($ItemRequest); // Code fails here 
} 

私はなぜ要求が失敗するか分かりません。私はオプション "例外" => 0、 "トレース" => 1、dを追加しようとしました__last_responseに期待された応答が含まれていることがわかります。私は正しい答えを取り戻したのになぜ不思議に失敗したのですか?

答えて

1

私はSoapClientクラスを拡張し、無効な文字をXMLメッセージから消去した__doRequestメソッドを実装することで問題を解決しました。

関連する問題