UGC содержание сообщения
Я просто пытаюсь запустить небольшой прототип, который публикует комментарии UGC с помощью веб-сервиса UGC.
Пример кода ниже. Я получаю ответ 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);
MTIA.
Джон
2 ответа
Вы должны попробовать опубликовать в коллекции комментариев:
ugcCall.UploadString("/Comments", "POST", ugcData);
Затем вы увидите, что вам не хватает CreationDate, момент, когда вам нужно добавить к вашей сущности что-то вроде:
\"CreationDate\":\"/Date(1359457694472)\"
(Я на самом деле не проверил, если вам нужно больше цитат там). Для формата даты в строке JSON проверьте спецификации odata.
Если у вас все еще есть проблемы, попробуйте изменить DOMAIN%5Cbsmith
к другому фиктивному значению ('test
' например).
Если этого недостаточно, то, возможно, вы можете просмотреть журналы, сгенерированные UGC WebService, и попытаться выполнить некоторую трассировку стека.
Еще одна вещь, на которую следует обратить внимание: свойства UGC должны быть правильно определены в файле Web.config, чтобы публикация могла произойти.
Надеюсь это поможет.
Я использовал тот же подход, что и вы, а именно сгенерированный прокси для веб-службы UGC. Для создания правильного 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);