API CLIO - Внутренняя ошибка сервера - Создать связь - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь обновить мое старое приложение 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#operation/Communication#create, чтобы проверить, правильно ли я отправляюзапрос.Я считаю, что это выглядит правильно, но явно я что-то упускаю.

Это ответ, который я получаю от сервера.

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 Ответ

0 голосов
/ 17 декабря 2018

Похоже, что значение, которое вы отправляете для data в полезной нагрузке вашего запроса, является массивом, а не объектом.Есть пример правильного формата данных на боковой панели на странице документации, которую вы связали.

Похоже, что в предоставленной вами полезной нагрузке есть недопустимый json.После matter.

отсутствует двойная кавычка. Поэтому, если вы измените свою полезную нагрузку, чтобы она выглядела примерно так, она должна работать (расширен для удобства чтения):

{
    "data":{
        "body":"test email for debug",
        "date":"2018-12-15T14:23:23Z",
        "matter":{"id":1035117666},
        "subject":"test",
        "type":"EmailCommunication"
    }
}
...