ВебУтилы.ApiCall не возвращает сообщение об ошибке после публикации

#c# #api #http-post

Вопрос:

Я пытаюсь использовать Ядро.ВебУтилы.ApiCall для получения информации из API. В основном пытаюсь создать отправку по API DHL. (У меня есть для этого тестовый ключ) Самая большая проблема для меня заключается в том, что сообщение об ошибке не показывает ничего, что могло бы помочь. Рядом со строкой, в которой произошла ошибка, нет «сообщения». Я понятия не имею, что происходит.

Вот фрагмент кода:

 public static DHLShipmentResponse CreateAPIDHLShipment(DhlapiCall shipment, string apiKey)
        {
            string url = "https://api-gw.dhlparcel.nl/";
            string urlParameters = "shipments";

            var byteArray = Encoding.ASCII.GetBytes(apiKey   ":");
            var auth = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

            var postcontent = JsonConvert.SerializeObject(shipment);
            var test = ApiCall.RunAsync<DHLShipmentResponse>(url, urlParameters, auth, postcontent);
            var response = ApiCall.RunAsync<DHLShipmentResponse>(url, urlParameters, auth, postcontent).GetAwaiter().GetResult();

            return response;
        }
 

Довольно маленький, довольно простой, с несколькими тестами, чтобы посмотреть, смогу ли я что-нибудь найти, но безрезультатно.
Просто для хорошей меры я взял значение «PostContent», чтобы запустить его через почтальона, и не получил никаких проблем. Поэтому я уверен, что содержание правильное. Я дважды проверил URL-адрес, и снова все в порядке. И, насколько я смог выяснить, мы всегда использовали аутентификацию таким образом (токены на предъявителя).

Вот что я получаю через почтальона:

 {
    "shipmentId": "69028c6a-ce50-4f2e-9483-27fd0a8f72ec",
    "product": "EPL-INT",
    "pieces": [
        {
            "labelId": "69028c6a-ce50-4f2e-9483-27fd0a8f72ec",
            "trackerCode": "SAMPLE0000180041",
            "parcelType": "PALLET",
            "pieceNumber": 1,
            "weight": 0,
            "labelType": "B2X_Generic_A4_Third"
        }
    ],
    "customsDeclarationId": "9a316738-3ef3-4471-9bd8-7c92deb50338"
}
 

И вот определение ответа:

 public partial class DHLShipmentResponse
{
    [JsonProperty("shipmentId")]
    public Guid ShipmentId { get; set; }

    [JsonProperty("product")]
    public string Product { get; set; }

    [JsonProperty("shipmentTrackerCode")]
    public string ShipmentTrackerCode { get; set; }

    [JsonProperty("pieces")]
    public List<PieceResponse> Pieces { get; set; }

    [JsonProperty("returnShipment")]
    public ReturnShipmentResponse ReturnShipment { get; set; }

    [JsonProperty("customsDeclarationId")]
    public string CustomsDeclarationId { get; set; }
}
public partial class PieceResponse
{
    [JsonProperty("labelId")]
    public Guid LabelId { get; set; }

    [JsonProperty("trackerCode")]
    public string TrackerCode { get; set; }

    [JsonProperty("printlessCode")]
    public string PrintlessCode { get; set; }

    [JsonProperty("parcelType")]
    public string ParcelType { get; set; }

    [JsonProperty("pieceNumber")]
    public long PieceNumber { get; set; }

    [JsonProperty("weight")]
    public long Weight { get; set; }

    [JsonProperty("dimensions")]
    [JsonConverter(typeof(ParseStringConverter))]
    public long Dimensions { get; set; }

    [JsonProperty("labelType")]
    public string LabeType { get; set; }
}
 

Я занимался этим несколько часов безрезультатно. Спасибо вам за помощь.

Ответ №1:

Нашел проблему. Это была проверка подлинности. Это не базовый жетон, это жетон на предъявителя. И мне не нужно превращать его в массив байтов перед отправкой.

Также я выучил это ядро.webutils-это НЕ пакет самородков, а одна из нашей библиотеки (я мог бы поклясться, что это не так).

Извините за потерю времени, хорошего дня