Невозможно отобразить ответное сообщение API в коде C #

#c# #json

#c# #json

Вопрос:

Я собираюсь сгенерировать API Eway Bill из приведенного ниже запроса.Ответ на приведенный ниже запрос отображается нормально в «Postmen», но в то же время, когда я выполняю этот приведенный ниже запрос из кода C #, он показывает сообщение об ошибке как «Удаленный сервер вернул ошибку: (400) Неверный запрос»..

Я хотел бы знать, как отобразить сообщение об ошибке postmen в коде C #.

URL :-

 https://ewbbackend-preprodpub-http.internal.cleartax.co/gst/v0.1/taxable_entities/1c74ddd2-6383-4f4b-a7a5-007ddd08f9ea/ewaybill/GLD23985?activity_type=GENERATE_EWB
  

Заголовок :-

 Content-type : application/json
X-Cleartax-Auth-Token : b1f57327-96db-4829-97cf-2f3a59a3a548
taxable_entity_id : b1f57327-96db-4829-97cf-2f3a59a3a548 
  

Тело :-

 {
  "id": "GLD23985",
  "transaction_date": "26/10/2020",
  "source": "USER",
  "document_number": "BQ/20/0251",
  "type": "OUTWARD",
  "transport_mode": "ROAD",
  "dispatch_from_state": "HARYANA",
  "sub_supply": "Supply",
  "distance": "90",
  "vehicle_number": "TN32N1049",
  "document_type": "Tax Invoice",
  "seller": {
    "address1": "142/1,Trunk Road",
    "address2": "Perumugai",
    "city": "Via Vellore",
    "gstin": "29AEKPV7203E1Z9",
    "name": "K.H Exports India Private Limited",
    "state": "HARYANA",
    "zip_code": ""
  },
  "receiver": {
    "address1": "4/74, VOC Street, Seenerkuppam Village, ",
    "address2": "Poonamalle, Chennai 600 056",
    "city": "",
    "gstin": "33AAACR1714R1ZA",
    "name": "KH EXPORTS INDIA PVT.LTD. (LGD)",
    "state": "TAMIL NADU",
    "zip_code": "600003"
  },
  "consignee": {
    "city": "",
    "state": "TAMIL NADU",
    "zip_code": "600003"
  },
  "line_items": [
    {
      "cess_rate": "0",
      "cess_val": "0",
      "cgst_rate": "0",
      "cgst_val": "0",
      "description": "STYLE;91311 COLOUR;SVFD7 BELT amp; PA",
      "gst_code": "4203",
      "igst_rate": "28.00",
      "igst_val": "16800.000000",
      "item_code": "STYLE;91311 COLOUR;SVFD7 BELT amp; PA",
      "quantity": "3.00",
      "serial_number": "1",
      "sgst_rate": "0",
      "sgst_val": "0",
      "taxable_val": "600.0000",
      "unit_of_measurement": "NUMBERS"
    },
    {
      "cess_rate": "0",
      "cess_val": "0",
      "cgst_rate": "0",
      "cgst_val": "0",
      "description": "STYLE;91307 COLOUR;ABFD2 BELT amp; PA",
      "gst_code": "4203",
      "igst_rate": "28.00",
      "igst_val": "16800.000000",
      "item_code": "STYLE;91307 COLOUR;ABFD2 BELT amp; PA",
      "quantity": "3.00",
      "serial_number": "2",
      "sgst_rate": "0",
      "sgst_val": "0",
      "taxable_val": "600.0000",
      "unit_of_measurement": "NUMBERS"
    }
  ]
}
  

Ответ:-

 {
    "errors": {
        "err_1": {
            "code": "BAD_REQUEST_ATTR",
            "message": "Pincode should have 6 digits.",
            "error_group_code": 0,
            "error_id": 0,
            "severity": "ERROR"
        }
    },
    "error_sources": {
        "seller": {
            "zip_code": {
                "error_refs": [
                    "err_1"
                ]
            }
        }
    }
}
  

C # Код:-

  string DATA = JsonConvert.SerializeObject(tr, Newtonsoft.Json.Formatting.Indented);

                using (var client = new WebClient())
                {
                    client.Headers.Add("taxable_entities", ConfigurationManager.AppSettings["taxable_entities"]);
                    client.Headers.Add("X-Cleartax-Auth-Token", ConfigurationManager.AppSettings["auth-token"]);
                    client.Headers[HttpRequestHeader.ContentType] = "application/json";
                    string url = ConfigurationManager.AppSettings["host"]   ConfigurationManager.AppSettings["taxable_entities"]   "/ewaybill/"   TblHeader.Rows[0]["id"].ToString()   "?activity_type=GENERATE_EWB";
                    string res = client.UploadString(url, "PUT", DATA);
}
  

Комментарии:

1. получаете ли вы данные в контроллере?

Ответ №1:

Привет, мой друг, вы можете использовать этот код для обработки вашего ответа и получения вашего ответа. Предыдущие примеры возвращают сообщение HttpResponseMessage от действия контроллера, но вы также можете использовать HttpResponseException для возврата HTTPError. Это позволяет вам возвращать строго типизированную модель в обычном случае успеха, при этом возвращая HTTPError в случае ошибки

     public Product GetProduct(int id)
{
    Product item = repository.Get(id);
    if (item == null)
    {
        var message = string.Format("Product with id = {0} not found", id);
        throw new HttpResponseException(
            Request.CreateErrorResponse(HttpStatusCode.NotFound, message));
    }
    else
    {
        return item;
    }
}
  

Комментарии:

1. Спасибо за ответ, на самом деле я беру api от правительства, просто я выполняю этот api, поэтому, пожалуйста, посоветуйте, как я могу контролировать эту ошибку в коде C #