onlinerby / onliner-b2b-api

Onliner B2B API Documentation
22 stars 12 forks source link

Как изменить только цену товара по его id каких входных нехватает почему json невалидный #207

Open belvision2 opened 2 months ago

belvision2 commented 2 months ago

`var url = "https://b2bapi.onliner.by/pricelists"; // URL для обновления прайс-листа var token = project.Variables["token"].Value; // Используем токен, полученный ранее, из переменной

// Формируем тело запроса для обновления только цены var requestBody = @" [ { ""id"": ""3104065001"", // ID вашего товара ""price"": ""10.5"", // Новая цена ""currency"": ""BYN"" // Валюта } ] ";

var request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); request.Method = "PATCH"; request.Headers["Authorization"] = "Bearer " + token; // Используем Bearer токен для авторизации request.Accept = "application/json"; // Устанавливаем заголовок Accept для ожидания JSON-ответа request.ContentType = "application/json"; // Устанавливаем Content-Type для передачи данных в формате JSON

try { // Преобразуем тело запроса в байты и отправляем using (var streamWriter = new System.IO.StreamWriter(request.GetRequestStream())) { streamWriter.Write(requestBody); }

using (var response = (System.Net.HttpWebResponse)request.GetResponse())
using (var reader = new System.IO.StreamReader(response.GetResponseStream()))
{
    var responseBody = reader.ReadToEnd();
    project.SendInfoToLog($"Response Body: {responseBody}", true);

    // Сохраняем ответ для дальнейшего использования
    project.Variables["response"].Value = responseBody;
}

} catch (System.Net.WebException ex) { if (ex.Response != null) { using (var reader = new System.IO.StreamReader(ex.Response.GetResponseStream())) { var errorResponse = reader.ReadToEnd(); project.SendErrorToLog($"Error: {ex.Message} - Response: {errorResponse}", true); project.Variables["response"].Value = $"Error: {ex.Message} - Response: {errorResponse}"; } } else { project.SendErrorToLog($"Error: {ex.Message} - No response received.", true); project.Variables["response"].Value = $"Error: {ex.Message} - No response received."; } } `

tairau commented 2 months ago

Проверьте эту часть кода, кажется Вы используете комментарии внутри json строки, соответственно сам json будет не валидный.

var requestBody = @"
[
{
""id"": ""3104065001"", // ID вашего товара
""price"": ""10.5"", // Новая цена
""currency"": ""BYN"" // Валюта
}
]
";

Попробуйте так

var requestBody = @"
[
{
""id"": ""3104065001"",
""price"": ""10.5"",
""currency"": ""BYN""
}
]
";