[C#] Отправка multipart/form-data данных

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by GlooK, 22 Jan 2011.

  1. GlooK

    GlooK Elder - Старейшина

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Для меня было большим разочарованием узнать, что стандартный класс
    WebRequest (HttpWebRequest) не поддерживает отправку данных множественного содержимого.
    Поэтому решил написать свой класс с блэкджеком и шлюхами...

    Пример использования:
    Code:
    // using WebTools;
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://antigate.com/in.php");
    using (MultiPartForm multiPart = new MultiPartForm(webRequest))
    {
        multiPart.AddData("method", "post");
        multiPart.AddData("key", "e19567160d1dd900b436978ef3c0c060");
        multiPart.AddFile("file", @"C:\captcha.jpg");
    }
    HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse().Close();
    
    Класс WebTools
     
    1 person likes this.
  2. Tigger

    Tigger Elder - Старейшина

    Joined:
    27 Aug 2007
    Messages:
    936
    Likes Received:
    527
    Reputations:
    204
    Молодец, полезная вещь ;)

    WebRequest вообще кривой, к сожалению. По непонятным мне причинам на некоторых сайтах не принимает кукисы.
     
    1 person likes this.
  3. CodeSender:)

    CodeSender:) Elder - Старейшина

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    Изврат имхо...Импортиш длл хотя можно сделать все средствами дотнета.Зачем MD5?Можно обычный дататайм юзать.AddFile нужно было сделать иначе, пусть лучше бы он принимал уже готовые байты чем читал сам файл, мало ли, вдруг тебе придётся туда передать что-то дургое...В AddFile и AddData нужно было сделать возможность выбора кодировки.
     
    #3 CodeSender:), 24 Jan 2011
    Last edited: 24 Jan 2011
  4. cheater_man

    cheater_man Member

    Joined:
    13 Nov 2009
    Messages:
    651
    Likes Received:
    44
    Reputations:
    7
    Да чувак юзать либу от Internet Explorer, Outlook and etc...не тру...
    Но все равно молодец=)
     
    #4 cheater_man, 24 Jan 2011
    Last edited: 24 Jan 2011
  5. GlooK

    GlooK Elder - Старейшина

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Как раз для этого, там есть перегруженная функция, которая принимает поток.
    Подскажите, как лучше сделать - буду только рад.
     
  6. CodeSender:)

    CodeSender:) Elder - Старейшина

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    Поток потоком, но лучше было бы если бы еще сделал функцию которая принимает чисто байты.
     
    1 person likes this.
  7. GlooK

    GlooK Elder - Старейшина

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    По идее можно добавить еще один перегруз для байтов. Просто мне потоки как то ближе =)
    А вот что делать по поводу dll. Как можно получить MIME типы без сторонней либы?
     
  8. CodeSender:)

    CodeSender:) Elder - Старейшина

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    Ну сделать возможность прописки самому...1 срочку прописать думаю не большая проблема.

    P.S application/unknown
    [​IMG]
     
    #8 CodeSender:), 24 Jan 2011
    Last edited: 24 Jan 2011
  9. GlooK

    GlooK Elder - Старейшина

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    В C# я недавно, поэтому не очень догоняю. Напиши здесь эту строчку =)
    Да, косяк. Надо тестить и отлаживать. Сам пока не пользовался своим классом. Только проверил, что работает.
     
    #9 GlooK, 24 Jan 2011
    Last edited: 24 Jan 2011
  10. CodeSender:)

    CodeSender:) Elder - Старейшина

    Joined:
    29 Jul 2010
    Messages:
    245
    Likes Received:
    115
    Reputations:
    23
    Я имею в виду позволить пользователю библиотеки самому вводить тип данных.
     
    #10 CodeSender:), 24 Jan 2011
    Last edited: 24 Jan 2011
  11. [SMD]

    [SMD] Member

    Joined:
    17 Nov 2010
    Messages:
    27
    Likes Received:
    5
    Reputations:
    0
    У кого-то осталось? Перезалейте.