Ошибка 404 при публикации нового сообщения на форуме в Desire2Learn 10.0

Я работаю с D2L API, и у меня возникают трудности с некоторыми запросами POST.

Выполнение проверки версии (POST) с использованием объекта JSON:

[{ "ProductCode": "lp", "Version": "1.0" }]

возвращает правильно, предоставляя мне в ответ действительный объект JSON, при этом я уверен, что мой код для выполнения вызова работает правильно.

Однако, когда я отправляю POST для создания сообщения на форуме, я получаю в ответ 404. Объект JSON, который я отправляю для этого вызова:

[
 {
 "ParentPostId": null,
 "Subject": "API Posted",
 "Message": {
   "Text": "This message has been posted by the API",
   "HTML": "This message has been posted by the API"
   },
 "IsAnonymous": false
 }
]

И отправленный URL-адрес: /d2l/api/le/{ver}/{orgId}/discussions/forums/{forumId}/topics/{topicId}/posts/

Я проверил, что все ver/orgId/forumId/topicId действительны, используя GET сообщения в том же форуме и теме. Я также пробовал цитировать значения для ParentPostId и IsAnonymous как по отдельности, так и одновременно.


person user1555498    schedule 26.07.2012    source источник


Ответы (2)


Попробуйте удалить квадратные скобки из JSON.

Ниже приведен пример успешного запроса и ответа:

REQUEST  

POST https://valence.desire2learn.com/d2l/api/le/1.0/7664/discussions/forums/203/topics/508/posts/?x_b=TwULqrltMXvTE8utuLCN5O&x_a=L2Hd9WvDTcyiyu5n2AEgpg&x_d=nF61tBeuzd0EPTW7nm8iGc4MB7NeJZaNM2VlzHp0bwU&x_c=I3i_k2aANTIf2X6aFsiOdvlElSR_avvOYnA2ibcWabA&x_t=1343335429 HTTP/1.1
Accept-Encoding: gzip,deflate
Accept: application/json
Content-Type: application/json

 { "ParentPostId": null, "Subject": "API Posted", "Message": { "Content": "This message has been posted by the API", "Type": "HTML" }, "IsAnonymous": false } 


RESPONSE

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Length: 369
Content-Type: application/json; charset=UTF-8
Expires: -1
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Date: Thu, 26 Jul 2012 20:43:58 GMT

{"ForumId":203,"PostId":574,"TopicId":508,"PostingUserId":3667,"ThreadId":205,"ParentPostId":null,"Message":{"Text":"","Html":"This message has been posted by the API"},"Subject":"API Posted","DatePosted":"2012-07-26T20:43:58.920Z","IsAnonymous":false,"RequiresApproval":false,"IsDeleted":false,"LastEditDate":null,"LastEditedBy":null,"CanRate":false,"ReplyPostIds":[]}
person Andres De la Barra    schedule 26.07.2012
comment
Это исправило это. Ранее я пытался добавить их в качестве исправления. Спасибо! - person user1555498; 27.07.2012

Просмотрите документацию по этому маршруту по адресу http://docs.valence.desire2learn.com/res/discuss.html#post--d2l-api-le-(D2LVERSION-version)-(D2LID-orgUnitId)-discussions-forums-(D2LID-forumId)-topics-(D2LID-topicId)-posts-, это похоже на требуемую структуру данных использует RichTextInput, а не RichText вместо Message.

Попробуйте изменить поле Message на:

{
   "Content": "This message has been posted by the API",
   "Type": "Text"
}
person Jeffrey Charles    schedule 26.07.2012
comment
Спасибо за предложение; Вы правы, что он ищет RichTextInput. Я пробовал это, и результат та же ошибка. Я пробовал как тип «Текст», так и «HTML». Новый JSON: [ { ParentPostId: null, Subject: API Posted, Message: { Content: Это сообщение было опубликовано API, Type: HTML }, IsAnonymous: false } ] - person user1555498; 26.07.2012