Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2010, 15:37   #1
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
Вопрос Переделать код с Delphi на C#. Post запрос и т.д.

Код:
function TPrimeThrd.IsPrime: string;
var
formData: TIdMultiPartFormDataStream;   s,yu:string;  reggi:tregexpr ;
  iter: integer;
begin   try
formdata:=TIdMultiPartFormDataStream.Create; // создаем переменную пост запрсоа
formData.AddFile('F',furl,'image/gif'); // видишь addfile добавляем файл furl(это просто перменная)

formData.AddFormField('upload', 'yes'); // вставляем еще параметры запрсоа
formData.AddFormField('rotate_angle', '0°'); // вставляем еще параметры запрсоа
s:=  form1.idHTP1.Post('http://www.radikal.ru/action.aspx',formData; //делаем запрос, который в s записывается
 reggi:=tregexpr.Create; //делаем переменную регулярки
reggi.Expression:='<input id="input_link_1" value="(.*?)"'; //определяем выражение регулярки
if reggi.Exec(s) then begin
isprime:=reggi.Match[1]; //если урл есть то выводим готов и урл в form2.label4.caption
  form2.Label3.Caption:='Готово!' ;
  form2.ProgressBar1.Position:=100;
  form2.Label4.Caption:='100%';
  ss:=true;
end else begin isprime:='Не удалось загрузить изображение'; // если урл не найден то пишем что не удалсоь
ss:=true;
end;

finally
 formdata.Free;
 reggi.Free;
end;
end;
Этот код выгружает изображение на хостинг изображений - Радикал.

нужно формировать пост запрос в нашей проге. Скрипты то уже есть на сервере. Мы стрчокой formData.AddFile('F',furl,'image/gif'); в formdata вставляем картинку. Потом formData.AddFormField('upload', 'yes');
formData.AddFormField('rotate_angle ', '0°'); добавляем необходимые еще поля в пост запрос и собственно производит сам запрос s:= form1.idHTP1.Post('http://www.radikal.ru/action.aspx',formData); который записывпется в стринг s
затем регулярками вытаскиваем урл

Вот всё что я нарыл, помогите переделать на C#

Последний раз редактировалось Casper-SC; 06.05.2010 в 15:43.
Casper-SC вне форума Ответить с цитированием
Старый 06.05.2010, 22:19   #2
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Лан, такой вопрос, какой есть аналог на .NET - TIdMultiPartFormDataStream?
Casper-SC вне форума Ответить с цитированием
Старый 07.05.2010, 01:34   #3
(IICuX)
Пользователь
 
Регистрация: 27.04.2010
Сообщений: 22
По умолчанию

отправить пост запрос можно с помощью WebRequest

еще попробуй WebClient.UploadData
(IICuX) вне форума Ответить с цитированием
Старый 07.05.2010, 02:26   #4
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Что тут не правильно? Я чё-то не пойму вообще отправка происходит?
Код:
        private void button1_Click(object sender, EventArgs e)
        {
            this.richTextBox1.Text = Post("http://www.radikal.ru/action.aspx", "multipart / form - data");
        }

        private string Post(string url, string parameters)
        {
            //создаем экземпляр класа WebRequest
            WebRequest webRequest = WebRequest.Create(url);

            FileStream stream = new FileStream(@"C:\Users\UserName\Desktop\для тестов скриншотов\Screenshot_1.png", FileMode.Open,
                FileAccess.Read, FileShare.Read);
            byte[] bytes2 = new byte[stream.Length];
            stream.Read(bytes2, 0, bytes2.Length); 
            
            WebClient webClient = new WebClient();
            webClient.UploadData("http://www.radikal.ru/", "POST", bytes2);
            
            //задаем используемый алгоритм передачи данных
            webRequest.ContentType = "multipart / form - data";//"application/x-www-form-urlencoded";
            webRequest.Method = "POST";

            //узнаем количество передаваемых байт
            byte[] bytes = Encoding.ASCII.GetBytes(parameters);
            Stream os = null;
            try
            {
                //количество передаваемых байт
                webRequest.ContentLength = bytes.Length;
                os = webRequest.GetRequestStream();

                //ну и собственно делаем запрос
                os.Write(bytes, 0, bytes.Length);
            }
            catch (WebException ex)
            {
                MessageBox.Show(ex.Message, "Ошибка проведения POST запроса",
                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                if (os != null)
                {
                    os.Close();
                }
            }
            try
            {
                // получаем ответ.
                WebResponse webResponse = webRequest.GetResponse();
                if (webResponse == null)
                {
                    return null;
                }
                StreamReader sr = new StreamReader(webResponse.GetResponseStream());
                return sr.ReadToEnd().Trim();
            }
            catch (WebException ex)
            {
                MessageBox.Show(ex.Message, "Ошибка проведения POST запроса",
                MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            return null;
        }
Casper-SC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите переделать код С++ в Delphi (CRC) Georgios Помощь студентам 2 22.07.2009 13:28
POST запрос DeDoK Работа с сетью в Delphi 6 12.07.2009 00:48
POST запрос в VBA motorway Microsoft Office Excel 1 04.07.2009 01:24
post запрос Editor Работа с сетью в Delphi 4 20.04.2008 14:01
Нужно переделать код с Delphi на C++ Builder POPOV Помощь студентам 2 12.11.2007 22:51