我只是在尝试运行一个小原型,它使用UGC web服务发布UGC评论。
代码示例如下。我从web服务得到了一个403响应,这表明我没有被授权使用该服务,所以我假设我需要创建一个身份验证头?有没有人有使用UGC web服务发布评论的例子?
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);玛蒂亚。
约翰
发布于 2013-01-29 19:15:10
你应该试着在评论集合上发帖:
ugcCall.UploadString("/Comments", "POST", ugcData);然后你会发现你错过了CreationDate,在这个时刻你需要向你的实体添加一些东西,比如:
\"CreationDate\":\"/Date(1359457694472)\"(我实际上还没有检查您是否需要更多的报价)。对于JSON字符串中日期的格式,请检查odata specs。
如果仍然有问题,请尝试将DOMAIN%5Cbsmith更改为另一个虚拟值(例如‘test’)。
如果这还不够,那么也许您可以查看由UGC WebService生成的日志,并尝试进行一些堆栈跟踪。
这里还有一件事需要注意:为了使post发生,需要在Web.config中正确地定义UGC属性。
希望这能有所帮助。
发布于 2013-01-29 20:15:07
我使用了与您正在使用的方法相同的方法,即为UGC web服务使用生成的代理。为了创建正确的JavaScriptSerializer,我们使用了标准的.NET json。我认为这使得代码更容易阅读。
这里有一个代码片段,也许它会有一点帮助。当然,您需要确保设置了变量。
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);https://stackoverflow.com/questions/14581033
复制相似问题