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);
Другие вопросы по тегам