7

UGC Web サービスを使用して UGC コメントを投稿する小さなプロトタイプを実行しようとしています。

コード例を以下に示します。サービスを使用する権限がないことを示す 403 応答を Web サービスから受け取りました。認証ヘッダーを作成する必要があると思いますか? 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);

MTIA。

ジョン

4

2 に答える 2

9

コメントコレクションに投稿してみてください。

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

次に、CreationDateが欠落していることがわかります。この瞬間、エンティティに次のようなものを追加する必要があります。

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

(私はあなたがそこにもっと引用符が必要かどうか実際にチェックしていません)。JSON文字列の日付の形式については、odataの仕様を確認してください。

それでも問題が解決しない場合は、DOMAIN%5Cbsmith別のダミー値(testたとえば、'')に変更してみてください。

それだけでは不十分な場合は、UGC WebServiceによって生成されたログを確認して、スタックトレースを作成してみてください。

ここでもう1つ注意すべき点は、投稿を実行するために、Web.configでUGCプロパティを正しく定義する必要があるということです。

お役に立てれば。

于 2013-01-29T11:15:09.860 に答える
7

私はあなたがフォローしているのと同じアプローチを使用しました。つまり、UGCWebサービス用に生成されたプロキシを使用しました。正しいjsonを作成するために、標準の.NETJavaScriptSerializerを使用しました。これにより、コードが少し読みやすくなると思います。

これがコードスニペットです。少し役立つかもしれません。もちろん、変数が設定されていることを確認する必要があります。

 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);
于 2013-01-29T12:15:06.577 に答える