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