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] 来自互联网的数据具有意外的格式。” 我发现了这个问题,并且我确实认识到 sitecore 查询使用“@”,但我添加了下面的代码片段,因为它似乎暗示了我得到了相同的响应。

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 语句,该语句发出请求“从 select * from 中选择 foo bar”或类似的东西。只需从查询中删除该部分即可获得正确的响应。

线索就在这份文件中。底部示例仅显示站点核心路径,而不是完整查询。

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 回答