C# Загрузка картинки на сервер Telegraph

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
774
Благодарностей
517
Баллы
93
Помогите разобраться, не могу сделать HTTP запрос на загрузку картинки в Telegraph, проблема стоит в "contentPostingType: "multipart/form-data"", почему-то с данным типом не отправляется запрос.

Через кубик POST запроса все работает нормально, но нужно через C#

C#:
var pathImg = @"C:\Users\Work\Desktop\qwer.png"; //Путь картинки

var userAgent = project.Profile.UserAgent;
var proxy = string.Empty;
var nameImg = Path.GetFileNameWithoutExtension(pathImg);
var rnd = ZennoLab.Macros.TextProcessing.RandomText(16, "dc");

var url = "https://telegra.ph/upload";

var content = $"------WebKitFormBoundary{rnd}\r\n" +
    $"Content-Disposition: form-data; name=\"file\"; filename=\"{nameImg}\"\r\n" +
    $"Content-Type: image/png\r\n" +
    $"{pathImg}\r\n" +
    $"------WebKitFormBoundary{rnd}--";

var resp = ZennoPoster.HTTP.Request
(
    method: ZennoLab.InterfacesLibrary.Enums.Http.HttpMethod.POST,
    UserAgent: userAgent,
    proxy: proxy,
    url: url,
    content: content,
    contentPostingType: $"multipart/form-data; boundary=----WebKitFormBoundary{rnd}",
    Encoding: "utf-8",
    respType: ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    Timeout: 30000,
    UseRedirect: true, MaxRedirectCount: 5,
    AdditionalHeaders: new[] { "Referer: https://telegra.ph/" },
    cookieContainer: project.Profile.CookieContainer
);
 
Последнее редактирование:

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
582
Баллы
93
потерто, дабы не вводить в заблуждение
 
Последнее редактирование:

Midnight

Client
Регистрация
28.02.2016
Сообщения
320
Благодарностей
183
Баллы
43
C#:
string url = "https://telegra.ph/upload";
FileInfo strFileInfo = new FileInfo(project.Variables["path"].Value);
string fileName = strFileInfo.Name;
string fileType = System.Web.MimeMapping.GetMimeMapping(project.Variables["path"].Value);
Random rnd = new Random();
string boundary = "------"+rnd.Next(100000000,999999999).ToString()+rnd.Next(100000,999999).ToString();
string data = boundary +
    "\r\nContent-Disposition: form-data; name=\""+fileName+"\"; filename=\""+fileName+"\"" +
    "\r\nContent-Type: " + fileType +
    "\r\n\r\n"+project.Variables["path"].Value+ "\r\n" + boundary+"--\r\n";
string answer = ZennoPoster.HTTP.Request(
    InterfacesLibrary.Enums.Http.HttpMethod.POST,
    url: url,
    content: data,
    contentPostingType: "multipart/form-data; boundary=" + boundary,
    respType: ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    Timeout: 120000,
    proxy: "",
    UserAgent: project.Profile.UserAgent
);
 
  • Спасибо
Реакции: Sho, Dmitriy Ka и Ilshakin

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
774
Благодарностей
517
Баллы
93
C#:
string url = "https://telegra.ph/upload";
FileInfo strFileInfo = new FileInfo(project.Variables["path"].Value);
string fileName = strFileInfo.Name;
string fileType = System.Web.MimeMapping.GetMimeMapping(project.Variables["path"].Value);
Random rnd = new Random();
string boundary = "------"+rnd.Next(100000000,999999999).ToString()+rnd.Next(100000,999999).ToString();
string data = boundary +
    "\r\nContent-Disposition: form-data; name=\""+fileName+"\"; filename=\""+fileName+"\"" +
    "\r\nContent-Type: " + fileType +
    "\r\n\r\n"+project.Variables["path"].Value+ "\r\n" + boundary+"--\r\n";
string answer = ZennoPoster.HTTP.Request(
    InterfacesLibrary.Enums.Http.HttpMethod.POST,
    url: url,
    content: data,
    contentPostingType: "multipart/form-data; boundary=" + boundary,
    respType: ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.BodyOnly,
    Timeout: 120000,
    proxy: "",
    UserAgent: project.Profile.UserAgent
);
Код работает, но я не могу понять, почему мой код не работает, вроде все тоже самое делает :-)
 

Ilshakin

Client
Регистрация
14.02.2017
Сообщения
639
Благодарностей
582
Баллы
93
не хватает разделителя "новая строка" в теле запроса:
$"Content-Type: image/png\r\n\r\n" +
 
  • Спасибо
Реакции: Dmitriy Ka и djaga

Dmitriy Ka

Client
Регистрация
03.05.2016
Сообщения
774
Благодарностей
517
Баллы
93
не хватает разделителя "новая строка" в теле запроса:
$"Content-Type: image/png\r\n\r\n" +
Спасибо, действительно в этом был косяк, не думал что еще одна новая строка так важна)
 
  • Спасибо
Реакции: Ilshakin

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