Есть внешний API, и мне нужно опубликовать некоторые объекты для него, чтобы получить некоторые данные.
Я попробовал его в Postman, и он отлично работает, как вы видите ниже:
И я попробовал это в моем приложении ASP.NET MVC, написанном также на C #:
public class TestingController : SurfaceController
{
[System.Web.Http.HttpGet]
public async System.Threading.Tasks.Task<ActionResult> Hit()
{
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Order order = new Order();
ClientDetailsModel ClientDetails = new ClientDetailsModel();
ProductDetailsModel ProductDetails = new ProductDetailsModel();
ShippingAdressModel ShippingAdress = new ShippingAdressModel();
ClientDetails.ClientName = "x";
ClientDetails.Email = "x";
ClientDetails.Note = "x";
ClientDetails.Tel = "x";
ProductDetails.ColorID = "1";
ProductDetails.Quantity = "1";
ProductDetails.SizeID = "1";
ProductDetails.ProductMatrixRecordID = "1";
ShippingAdress.City = "x";
ShippingAdress.CountryID = "1";
ShippingAdress.PostalAddress = "x";
ShippingAdress.Street = "x";
ShippingAdress.StreetAddress = "x";
order.ResponseType = "JSON";
order.Token = "P74kXRjM4W44l9qNw8u3";
order.PaymentMode = "1";
order.ProductDetails = ProductDetails;
order.ShippingAddress = ShippingAdress;
order.ClientDetails = ClientDetails;
order.CurrencyAbbreviation = "JOD";
var response = await client.PostAsJsonAsync<Order>("https://bmswebservices.itmam.com/OrderingManagement/Orders.asmx/PlaceOrder", order);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
if (!response.IsSuccessStatusCode)
{
Console.WriteLine("ERROR: Products Not Posted." + response.ReasonPhrase);
return null;
}
var cs = await response.Content.ReadAsAsync<Order>();
return Json(cs);
}
}
Я получил внутреннюю ошибку сервера HTTP 500:
Примечание: я использовал тот же способ для других API, но разница в этом заключается в отправке целых объектов на сервер.
Любой может помочь в том, как применить объекты к серверу с типом контента application/x-www-form-urlencoded
?