Кто может помочь с загрузкой изображения? - Post BoundaryForm на C#

SHILY

Client
Регистрация
05.06.2016
Сообщения
258
Благодарностей
304
Баллы
63
Добрый день! Кто может, пожалуйста, помочь?:-)

Суть: Нужно загрузить файл-изображение, через экшен C# (обычным post экшеном - всё оки, но хочу экшеном шарпа научиться для удобства, и, именно зеновской либой, а не xNet:D), но вылетает исключение.

Вот код и не пойму, что здесь не так у меня:(
POST - Boundary:
//POST - запрос загрузки изображения
contentData += "------WebKitFormBoundary" + rand16 + "\n";
contentData += "Content-Disposition: form-data; name=\"image\"; filename=\"" + project.Variables["name_loaded_file"].Value + "\"" + "\n";
contentData += "Content-Type: image/jpeg" + "\n"+"\n";
contentData += project.Variables["put_loaded_img_file_profile"].Value; //путь к файлу

try
{
    resultHttpPost = ZennoPoster.HTTP.Request
    (
        InterfacesLibrary.Enums.Http.HttpMethod.POST,
       "https://avatars.rambler.ru/upload", //url запроса
        contentData, //данные, которые передаем
        "multipart/form-data", //тип данных
        project.Variables["PROXY"].Value, //прокся
        "UTF-8", //кодировка
        ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly, //что получать в ответ
        60000, //таймаут ожидания ответа
        "", //куки
        project.Profile.UserAgent, //юзерагент
        true, //разрешить редирект
        5, //количество редиректов
        new String[]
        {
            //дополнительные заголовки запроса
            "Accept: */*",
            "Accept-Encoding: gzip, deflate, br",
            "Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3",
            "Referer: https://id.rambler.ru/account/profile",
            "Origin: https://id.rambler.ru",
            "Connection: keep-alive"
        },
        "", //путь, куда качаем файл
        false, //использовать оригенальный url
        false,
        project.Profile.CookieContainer //контейнер куков
    );
    project.Variables["loadImgResp"].Value = resultHttpPost;
}
catch
{
    project.SendWarningToLog("[" + project.Variables["AccountFull"].Value + "]  -  Ошибка post/get запроса ->  Пропуск действия", true);    
}
 
Последнее редактирование:

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43
C#:
//постим запросом на imgur
int query_count = 0;
string answer = string.Empty;
while(answer==""){
 answer = ZennoPoster.HttpPost(
 "https://api.imgur.com/3/image",post_data,
 "multipart/form-data",
 "",
 "utf-8",
 ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
 30000,"","ShareX",true,10,
 new [] {
 "Host: api.imgur.com",
 "Authorization: Client-ID d297fd441566f99",
 "Content-Type: multipart/form-data; boundary=--------------------8d58d7876f67e5b",
 "Connection: keep-alive"
 }
 );
 if (++query_count>=5 && answer=="")
 {
 project.Variables["answer"].Value = "";
 project.SendWarningToLog("[Финальная отправка данных: пустой ответ 5 раз(а) подряд]", true);
 }
}
//парсим нашу картинку //(?<="id":").*?(?=")
string pic="";
try{pic = Convert.ToString(Regex.Match(answer, @"(?<=""id"":"").*?(?="")")).Trim();}catch{}
 
  • Спасибо
Реакции: SHILY

SHILY

Client
Регистрация
05.06.2016
Сообщения
258
Благодарностей
304
Баллы
63
C#:
//постим запросом на imgur
int query_count = 0;
string answer = string.Empty;
while(answer==""){
answer = ZennoPoster.HttpPost(
"https://api.imgur.com/3/image",post_data,
"multipart/form-data",
"",
"utf-8",
ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
30000,"","ShareX",true,10,
new [] {
"Host: api.imgur.com",
"Authorization: Client-ID d297fd441566f99",
"Content-Type: multipart/form-data; boundary=--------------------8d58d7876f67e5b",
"Connection: keep-alive"
}
);
if (++query_count>=5 && answer=="")
{
project.Variables["answer"].Value = "";
project.SendWarningToLog("[Финальная отправка данных: пустой ответ 5 раз(а) подряд]", true);
}
}
//парсим нашу картинку //(?<="id":").*?(?=")
string pic="";
try{pic = Convert.ToString(Regex.Match(answer, @"(?<=""id"":"").*?(?="")")).Trim();}catch{}
Спасибо, теперь запрос хотя бы запускается, только куки надо сейчас как-то извлечь из контейнера куков, у "ZennoPoster.HttpPost" нет же функции CookieContainer*lol*
 

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43
все есть

вот пример из доков
C#:
// clear profile cookie container
project.Profile.CookieContainer.Clear();
// creates new cookie container
var cookieContainer = new CookieContainer();
// http request
ZennoPoster.HTTP.Request(InterfacesLibrary.Enums.Http.HttpMethod.GET, "https://zennolab.com", cookieContainer: cookieContainer);

Спасибо, теперь запрос хотя бы запускается, только куки надо сейчас как-то извлечь из контейнера куков, у "ZennoPoster.HttpPost" нет же функции CookieContainer*lol*
 
  • Спасибо
Реакции: SHILY

SHILY

Client
Регистрация
05.06.2016
Сообщения
258
Благодарностей
304
Баллы
63
все есть

вот пример из доков
C#:
// clear profile cookie container
project.Profile.CookieContainer.Clear();
// creates new cookie container
var cookieContainer = new CookieContainer();
// http request
ZennoPoster.HTTP.Request(InterfacesLibrary.Enums.Http.HttpMethod.GET, "https://zennolab.com", cookieContainer: cookieContainer);

Ты меня запутал *lol*

Я изначально же и использовал "InterfacesLibrary.Enums.Http.HttpMethod.POST"(там есть функция контейнера) и всё заполнено верно, обычные пост/гет/put и т.д. запросы работают, а загрузка файла BoundaryForm не хочет - вылетает исключение. А ты кинул сначала пример кода на "ZennoPoster.HttpPost" - он срабатывает с моими же данными, но там нет функции контейнера, от этого файл и не загружается:(
 

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43
ну так передай куки из контейнера
 

SHILY

Client
Регистрация
05.06.2016
Сообщения
258
Благодарностей
304
Баллы
63
ну так передай куки из контейнера
Это-то понятно, но не понятно то, почему "InterfacesLibrary.Enums.Http.HttpMethod.POST" - не работает, а "ZennoPoster.HttpPost" - работает. Может это баг о котором нужно сообщить?
 

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43
Это-то понятно, но не понятно то, почему "InterfacesLibrary.Enums.Http.HttpMethod.POST" - не работает, а "ZennoPoster.HttpPost" - работает. Может это баг о котором нужно сообщить?
про этот баг уже давно говорят , но поддержка не спешит его чинить.
 

SHILY

Client
Регистрация
05.06.2016
Сообщения
258
Благодарностей
304
Баллы
63

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)