0

次のコード スニペットがあります。Xamarin Sitecore 拡張機能で提供されるサンプル コードのわずかに変更されたバージョン。

 var requesttwo = ItemWebApiRequestBuilder.ReadItemsRequestWithSitecoreQuery("select * from /sitecore/content/Home//*[@@TemplateName='Article']")
 .AddFieldsToRead(new string[3] { "Title", "Author", "Content" })
 .AddScope(ScopeType.Self)
 .Build();

 ScItemsResponse response = null;
 try
 {
     // And execute it on a session asynchronously
     response = await session.ReadItemAsync(requesttwo);
 }
 catch (Exception e)
 {
     String error = e.Message;
 }

交換すると期待通りに動作します

ReadItemsRequestWithSitecoreQuery("select * from /sitecore/content/Home//*[@@TemplateName='Article']")

ReadItemsRequestWithPath("/sitecore/content/home")

しかし、上記のブロックは「[Sitecore Mobile SDK] Data from the internet has unexpected format.」をスローします。この質問を見つけました。サイトコア クエリで「@」が使用されていることは認識していますが、以下のスニペットを追加すると、同じ応答が得られます。

string format = HttpUtility.HtmlEncode("select * from /sitecore/content/Home//*[@@TemplateName='Article']");
4

1 に答える 1

0

私は問題を理解しました。以下のコードは期待どおりに動作します。

var requesttwo = ItemWebApiRequestBuilder.ReadItemsRequestWithSitecoreQuery("/sitecore/content/Home//*[@@TemplateName='Article']")
.AddFieldsToRead(new string[3] { "Title", "Author", "Content" })
.Build();

ScItemsResponse response = null;
try
{
    // And execute it on a session asynchronously
    response = await session.ReadItemAsync(requesttwo);
}
catch (Exception e)
{
    String error = e.Message;
}

「select * from」を削除する必要がありました。AddFieldsToRead は、「select foo bar from select * from」などの要求を行っていた独自の select ステートメントを追加していると思います。クエリからその部分を削除するだけで、適切な応答が得られます。

手がかりはこの文書にありました。下の例は、完全なクエリではなく、サイトコア パスのみを示しています。

string query = "/sitecore/media library/images/*";

var request = ItemWebApiRequestBuilder.ReadItemsRequestWithSitecoreQuery(query)
.AddScope(ScopeType.Self)
.PageNumber(0)
.ItemsPerPage(2)
.Build();

var response = await this.session.ReadItemAsync(request);
于 2016-09-14T15:17:17.480 に答える