【问题标题】:UGC post contentUGC帖子内容
【发布时间】:2013-01-12 21:54:36
【问题描述】:

我只是想运行一个使用 UGC Web 服务发布 UGC cmets 的小原型。

代码示例如下。我从 Web 服务收到 403 响应,表明我无权使用该服务,所以我认为我需要创建一个身份验证标头?有没有人有任何关于如何使用 UGC 网络服务发布 cmets 的示例?

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);

MTIA。

约翰

【问题讨论】:

  • 为什么要使用网络服务发布 cmets? WebServiceClient 类在哪个 API 中?
  • 问得好,我们是否有兴趣提交Area 51 Tridion specific proposal。如果有时间,请使用同一个 SO 帐户注册。
  • 嗨,Asier,我们在这个项目中使用 DD4T,所以不能使用标准的 Web 控件。 WebServiceClient 是 UGC 网络服务的一部分。
  • 嗨,巴特,已经注册了。 :)

标签: tridion tridion-2011 tridion-content-delivery ugc


【解决方案1】:

您应该尝试在评论集合上发帖:

ugcCall.UploadString("/Comments", "POST", ugcData);

然后你会发现你错过了 CreationDate,你需要添加到你的实体的时刻,比如:

\"CreationDate\":\"/Date(1359457694472)\"

(我实际上并没有检查您是否需要更多引号)。对于 JSON 字符串中日期的格式,请检查 odata specs

如果仍有问题,请尝试将DOMAIN%5Cbsmith 更改为另一个虚拟值(例如'test')。

如果这还不够,那么也许您可以查看 UGC WebService 生成的日志并尝试制作一些堆栈跟踪。

这里还有一点需要注意:需要在 Web.config 中正确定义 UGC 属性才能发布帖子。

希望这会有所帮助。

【讨论】:

  • 您好丹尼尔,感谢您的指点。您的“评论”建议而不是“PostData”让它发挥作用。我将创建日期留空,因为无论如何它似乎默认为日期。一旦我将其更改为“评论”,日志就会导致我在 JSON 字符串中出现语法错误。这已得到纠正,现在它从网络服务的 cmets 发布。再次感谢。
【解决方案2】:

我使用了与您所遵循的方法相同的方法,即为 UGC Web 服务使用生成的代理。为了创建正确的 json,我们使用了标准的 .NET JavaScriptSerializer。我认为这使代码更易于阅读。

这是一个代码 sn-p,也许它有点帮助。当然,您需要确保设置了变量。

 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);

【讨论】:

    猜你喜欢
    • 2020-05-01
    • 2021-11-21
    • 2021-01-15
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    相关资源
    最近更新 更多