- Регистрация
- 24.01.2011
- Сообщения
- 57
- Благодарностей
- 30
- Баллы
- 18
Всем привет, столкнулся с проблемой, нужно передать запрос к wildberries, запрос заливки картинки отзыва, выглядит он так
Content-Disposition: form-data; name="request"; filename="blob"
Content-Type: application/json
json
------WebKitFormBoundary3ZA5SG3LB1ArNRE5
Content-Disposition: form-data; name="image"; filename="blob"
Content-Type: image/png
картинка
------WebKitFormBoundary3ZA5SG3LB1ArNRE5--
Казалось бы ничего сложного, но проблема в том, что через кубик запрос коверкается, обрубает Content-Type где не надо или вообще делает какую-то отсебятину, сделал на C# через метод ZennoPoster.HTTP.Request, но там он поступает аналогично. Специально даже сохранял в переменную данные перед отправкой и через burpsuite снифал инфу, которую он реально отправил, они не совпадают. Уже откровенно злить начинает, что он коверкает совершенно конкретные мои данные, а я не могу залезть глубже в него и запретить ему это делать...
В итоге переделал на httpClient, всё получилось, но в итоге споткнулся на том, что не хочет работать с прокси вообще ни с какими, даже с локальными. По итогу на родных кубиках и C# от зенно работают прокси, но не работают сами запросы, а на System.Net работает запрос как надо, но не работают прокси. Я думаю не только я сталкивался с тем, что зенно искажает запрос, надеюсь на помощь. У кого-то получилось подружить httpClient и socks5 прокси или вообще хотя бы обычные, у меня даже локальные не работают?
Код сейчас выглядит примерно так. Прокси пытался подключать разными способами, в итоге получаю просто "При выполнении произошла одна или несколько ошибок"
Content-Disposition: form-data; name="request"; filename="blob"
Content-Type: application/json
json
------WebKitFormBoundary3ZA5SG3LB1ArNRE5
Content-Disposition: form-data; name="image"; filename="blob"
Content-Type: image/png
картинка
------WebKitFormBoundary3ZA5SG3LB1ArNRE5--
Казалось бы ничего сложного, но проблема в том, что через кубик запрос коверкается, обрубает Content-Type где не надо или вообще делает какую-то отсебятину, сделал на C# через метод ZennoPoster.HTTP.Request, но там он поступает аналогично. Специально даже сохранял в переменную данные перед отправкой и через burpsuite снифал инфу, которую он реально отправил, они не совпадают. Уже откровенно злить начинает, что он коверкает совершенно конкретные мои данные, а я не могу залезть глубже в него и запретить ему это делать...
В итоге переделал на httpClient, всё получилось, но в итоге споткнулся на том, что не хочет работать с прокси вообще ни с какими, даже с локальными. По итогу на родных кубиках и C# от зенно работают прокси, но не работают сами запросы, а на System.Net работает запрос как надо, но не работают прокси. Я думаю не только я сталкивался с тем, что зенно искажает запрос, надеюсь на помощь. У кого-то получилось подружить httpClient и socks5 прокси или вообще хотя бы обычные, у меня даже локальные не работают?
Код сейчас выглядит примерно так. Прокси пытался подключать разными способами, в итоге получаю просто "При выполнении произошла одна или несколько ошибок"
C#:
var purchaseDetailsJson = "json данные";
var imagePath = @"Путь к картинке"; // Замените на путь к вашему изображению
Image newImage = Image.FromFile(imagePath);
ImageConverter _imageConverter = new ImageConverter();
byte[] paramFileStream = (byte[])_imageConverter.ConvertTo(newImage, typeof(byte[]));
var httpClientHandler = new HttpClientHandler
{
Proxy = new WebProxy(Address: "http://192.168.0.105:8080"),
//Address = new Uri("http://192.168.0.105:8080")
UseCookies = false,
UseProxy = true,
PreAuthenticate = false,
};
var httpClient = new HttpClient(httpClientHandler);
httpClient.DefaultRequestHeaders.Add("Заголовок 1");
httpClient.DefaultRequestHeaders.Add("Заголовок 2");
httpClient.DefaultRequestHeaders.Add("Заголовок 3");
using (var formData = new MultipartFormDataContent())
{
// Добавление JSON в форму
var jsonContent = new StringContent(purchaseDetailsJson, Encoding.UTF8, "application/json");
jsonContent.Headers.Add("Content-Disposition", "form-data; name=\"request\"; filename=\"blob\"");
formData.Add(jsonContent);
var imageStream = new StreamContent(new MemoryStream(paramFileStream));
imageStream.Headers.Add("Content-Type", "image/png");
imageStream.Headers.Add("Content-Disposition", "form-data; name=\"image\"; filename=\"blob\"");
formData.Add(imageStream);
// Отправка POST-запроса
var response = httpClient.PostAsync("https://feedbacks3-api.wb.ru/api/user/feedback/photos/v1", formData);
//return response.Result.RequestMessage.Content.ReadAsStringAsync().Result;
return response.Result.Content.ReadAsStringAsync().Result;
}
Последнее редактирование: