API CLIO - Внутренняя ошибка сервера - Создать связь
Я пытаюсь обновить мое старое приложение v2 до v4. В настоящее время я сталкиваюсь с проблемой, когда я получаю сообщение "Внутренняя ошибка сервера", когда я пытаюсь создать связь с использованием C#, реализующего RestSharp. Моя схема выглядит следующим образом:
public class CommunicationList
{
public List<MakeCommunication> data { get; set; }
}
public class MakeCommunication
{
public string body { get; set; }
public DateTime date { get; set; }
public NestedMatter matter { get; set; }
public string subject { get; set; }
public string type { get; set; }
}
public class NestedMatter
{
public int id { get; set; }
}
Я заполняю объекты соответствующими данными. Моя установка для RestSharp POST выглядит следующим образом:
var request = new RestRequest("api/v4/communications.json", Method.POST);
request.AddHeader("Authorization", "Bearer " + ConfigIt.readConfiguration("token"));
request.AddParameter("fields", "body, date, matter{id}, subject, type");
Я сериализую объект без метода AddJsonBody, потому что мои исследования привели меня к убеждению, что метод AddJsonBody производил искаженный json, поэтому я использую следующий код для сериализации объектов:
request.RequestFormat = DataFormat.Json;
request.AddBody(commWrapper);
comWrapper - это объект типа CommunicationList снизу.
Получение общей внутренней ошибки сервера на самом деле не указывает мне путь отладки этой вещи. Кто-нибудь видел подобную проблему? Какие-либо предложения?
Спасибо за любую помощь, которую вы можете оказать, мои глаза будут пересекаться в этот момент.
ОБНОВЛЕНИЕ - суббота, 15 декабря
Я сделал еще несколько копаний по этому вопросу. Используя Fiddler, я смог убедиться, что это то, что отправляется на сервер:
POST https://app.goclio.com/api/v4/communications.json HTTP/1.1
Authorization: Bearer ******************************
Accept: application/json, text/json, text/x-json, text/javascript,
application/xml, text/xml
User-Agent: RestSharp/106.5.4.0
Content-Type: application/json
Host: app.goclio.com
Content-Length: 151
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
{"data":[{"body":"test email for debug","date":"2018-12-15T14:23:23Z","matter:{"id":1035117666},"subject":"test","type":"EmailCommunication"}]}
Я вернулся к документации API по адресу https://app.clio.com/api/v4/documentation, чтобы дважды проверить, что я отправляю правильный запрос. Я считаю, что это выглядит правильно, но я явно что-то упускаю
Это ответ, который я получаю с сервера.
HTTP/1.1 500 Internal Server Error
Content-Type: application/json; charset=utf-8
Connection: keep-alive
Status: 500 Internal Server Error
X-RateLimit-Limit: 600
X-RateLimit-Reset: 1544883900
X-RateLimit-Remaining: 599
X-Request-Id: 41199f9a-f569-4688-97a7-04b309cf85ed
X-Frame-Options: SAMEORIGIN
Cache-Control: private, no-cache, no-store, must-revalidate
X-XSS-Protection: 1; mode=block
X-API-VERSION: 4.0.5
X-Content-Type-Options: nosniff
Date: Sat, 15 Dec 2018 14:24:09 GMT
Server: nginx
Content-Length: 75
{"error":{"type":"InternalServiceError","message":"Something went wrong."}}
Я надеюсь, что кто-то, возможно, сталкивался с этим раньше. Любая помощь с благодарностью.
1 ответ
Похоже, значение, которое вы отправляете data
в вашем запросе полезной нагрузкой является массив, а не объект. Пример правильного формата данных на боковой панели на странице документации, на которую вы ссылаетесь, приведен.
Похоже, что в предоставленной вами информации есть недопустимый json. Двойная кавычка отсутствует после matter
,
Так что если вы измените свою полезную нагрузку, чтобы она выглядела примерно так, она должна работать (расширен для удобства чтения):
{
"data":{
"body":"test email for debug",
"date":"2018-12-15T14:23:23Z",
"matter":{"id":1035117666},
"subject":"test",
"type":"EmailCommunication"
}
}