Joh*_*ohn 7 ugc tridion tridion-content-delivery tridion-2011
我只是想运行一个使用UGC Web服务发布UGC评论的小原型.
代码示例如下.我收到来自Web服务的403响应,表示我没有被授权使用该服务,所以我认为我需要创建一个身份验证标头?有没有人有任何关于如何使用UGC网络服务发表评论的例子?
string ugcData = "{d\":{\"Content\":\"FROM WEB SERVICE\",\"Status\":2,\"ItemPublicationId\":\"68\",\"ItemId\":\"17805\",\"ItemType\":\"16\",\"Id\":0,\"ModeratedDate\":\"\",\"LastModifiedDate\":\"\",\"CreationDate\":\"\",\"Score\":0,\"Moderator\":\"\",\"User\":{\"Id\":\"DOMAIN%5Cbsmith\",\"Name\":\"Bill Smith\"}\"}";
WebServiceClient ugcCall = new WebServiceClient();
ugcCall.UploadString("/PostData", "POST", ugcData);
Run Code Online (Sandbox Code Playgroud)
MTIA.
约翰
您应该尝试发布评论集合:
ugcCall.UploadString("/Comments", "POST", ugcData);
Run Code Online (Sandbox Code Playgroud)
然后,您将看到您缺少CreationDate,您需要在其中添加以下内容:
\"CreationDate\":\"/Date(1359457694472)\"
Run Code Online (Sandbox Code Playgroud)
(我实际上没有检查你是否需要更多的报价).对于JSON字符串中日期的格式,请检查odata规范.
如果仍有问题,请尝试更改DOMAIN%5Cbsmith为另一个虚拟值(test例如' ').
如果这还不够,那么也许您可以查看UGC WebService生成的日志,并尝试制作一些堆栈跟踪.
这里需要注意的另一件事是:需要在Web.config中正确定义UGC属性,以便发布帖子.
希望这可以帮助.
我使用了与您所遵循的相同的方法,即使用生成的代理用于UGC Web服务.为了创建正确的json,我们使用了标准的.NET JavaScriptSerializer.我认为这使得代码更容易阅读.
这是一个代码片段,也许它有点帮助.当然,您需要确保设置变量.
WSR_ContentDelivery.User user = new WSR_ContentDelivery.User
{
Id = GetUserId(),
Name = username,
EmailAddress = email,
ExternalId = website
};
WSR_ContentDelivery.Comment comment = new WSR_ContentDelivery.Comment
{
CreationDate = DateTime.UtcNow,
LastModifiedDate = DateTime.UtcNow,
ItemPublicationId = tcmUri.PublicationId,
ItemId = tcmUri.ItemId,
ItemType = tcmUri.ItemTypeId,
Content = content,
User = user,
Status = Statuses.SubmittedNeedsModeration,
Score = 0
};
JavaScriptSerializer serializer = new JavaScriptSerializer();
return WSClient.UploadString("/Comments", "POST", "{d:" +
serializer.Serialize(comment) + "}", user.Id);
Run Code Online (Sandbox Code Playgroud)