Перейти к содержанию
Fire Monkey от А до Я

serg557

Пользователи
  • Постов

    13
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные serg557

  1. Где получили, для чего и как нужно использовать?

    Воспользуйтесь сервисом, http://2cyr.com/decode/?lang=ru например, для определения типа кодировки.

     

    Посмотрел-кодировка cp930-это где ж ее можно взять?

  2.  Тема закрыта, решение нашлось благодаря теме в соседней ветке. приведу весь кусок кода- может спасу кому-то день  ;)

    #include <IdURI.hpp>
    ...
    TStringList *SL2= new TStringList;
    SL2->Clear();
    OpenDialog1->Execute();
    TIdMultiPartFormDataStream *PostFile= new TIdMultiPartFormDataStream;
    PostFile->Clear();
    PostFile->AddFormField("FileName",ExtractFileName(OpenDialog1->FileName));
    PostFile->AddFile("Filedata",OpenDialog1->FileName);
    PostFile->AddFormField("Upload","Submit Query");
    SL2->Text=TIdURI::URLDecode(HTTP1->Post("http://...", PostFile));
    Memo1->Text=SL2->Text;
    PostFile->Free();
    SL2->Free();
    HTTP1->Request->ContentType="application/x-www-form-urlencoded";
    

    изменение в 11 строке и добавление include

  3. Ну, как промежуточный вариант-сделать мобильный клиент под конкретный сайт:

    1.получаешь страницу с помощью get;

    2. парсишь ее как нужно (например с помощью .Pos);

    3. результаты выводишь в тот же webbrowser (LoadFromStrings);

    4.элементы управления выводишь на форму отдельно и обрабатывешь их post запросом;

    5. п.3

    6. profit

     

    А вот как сделать универсальный вариант - может еще кто подскажет :)  

  4.  

    вообще в request есть поле Accept-charset

     

    если его заполнить, высока вероятность ответа в нужной кодировке

    Пробовал-тогда сервер вообще не отвечает

     

    с TEncodingтоже пробовал -не помогло-неужели нет ничего стандартного?

  5. Всем приятного времени суток-столкнулся собственно с проблемой при загрузке файла на сервер ответ выдается в кодировке ISO-8859-1, которая в программе естественно не воспринимается.

    TStringList *SL2= new TStringList;
    SL2->Clear();
    OpenDialog1->Execute();
    TIdMultiPartFormDataStream *PostFile= new TIdMultiPartFormDataStream;
    PostFile->Clear();
    PostFile->AddFormField("FileName",ExtractFileName(OpenDialog1->FileName));
    PostFile->AddFile("Filedata",OpenDialog1->FileName);
    PostFile->AddFormField("Upload","Submit Query");
    SL2->Text=HTTP1->Post("http://...", PostFile);
    Memo1->Text=SL2->Text;
    PostFile->Free();
    SL2->Free();
    HTTP1->Request->ContentType="application/x-www-form-urlencoded";
    
    

    Отсюда два вопроса: есть ли возможность штатными средствами перекодировать ISO-8859-1 в UTF-8, или как-то изменить кодировку 

    HTTP1->Request->ContentType="multipart/form-data; boundary= --";

    запрос веб-браузера 

    Цитата

    multipart/form-data; boundary=----WebKitFormBoundarysjyKuBn6c5UVfiFL 

    Запрос IdHTTP

    Цитата

    multipart/form-data; boundary=--------091715182418229

    Пример ответа сервера

    Цитата

    Файл: Son.of.Sinbads.txt - ÑÑпеÑно загÑÑжен в новоÑÑÑ!

    Можно конечно сделать запрос на онлайн сервис - но как -то это :lol:

  6. Выдавал  клиент, но спасибо  krapotkin -натолкнул на мысль что компоненты IdTCPClient и IdTCPServer тут не причем и искать дальше.

    Нашел компонент - IdHTTP - который действительно неправильно формировал запрос.

    А так компоненты IdTCPClient и IdTCPServer  полностью адекватно друг с другом связываются.

    Так что тема закрыта.

  7. Вопрос заключается в следующем - есть сервер сделанный в VCL

    Server1->DefaultPort=6590
    void __fastcall TForm3::Server1Execute(TIdContext *AContext) // на запрос от клиента
    {
     TIdIOHandler *a = AContext->Connection->IOHandler;
     UnicodeString res = a->ReadLn(IndyUTF8Encoding(true));
     if (res == "zapros")
      {
       if (ListBox1->Items->Strings[0]!="")
    	{
    	a->WriteLn(ListBox1->Items->Strings[0],IndyUTF8Encoding(true));
    	a->WriteLn(ListBox3->Items->Strings[0],IndyUTF8Encoding(true));
    	ListBox2->Items->Add("("+AContext->Connection->Socket->Binding->IP+")"+ListBox1->Items->Strings[0]);
    	}

    есть клиент написанный на vcl

    //порт указан вручную
     Client1->Host =Edit2->Text;
     if (Client1->Connected()==false)
     {
      try
     {
     Client1->Connect();
    
     }
     catch(...)
     {
      ShowMessage("Не удалось подключиться");
     }
     }
    TIdIOHandler *a = Client1->IOHandler;
    a->WriteLn("zapros",enUTF8);
    Edit1->Text=a->ReadLn(enUTF8);
    Edit5->Text=a->ReadLn(enUTF8);
    a->Free();
    }
    
    

    рабочий, захотел переложить его на FMX:

    Client1->Port=6590;
    Client1->Host=Edit1->Text;
     if (Client1->Connected()==false)
     {
      try
      {
      Client1->Connect();
    
      }
     catch(...)
      {
      Client1->Socket->Close();
      ShowMessage("Не удалось подключиться");
      }
    }
    TIdIOHandler *a = Client1->IOHandler;
    a->WriteLn("zapros",IndyUTF8Encoding(true));
    Edit3->Text=a->ReadLn(IndyUTF8Encoding(true));
    Edit5->Text=a->ReadLn(IndyUTF8Encoding(true));
    Client1->Socket->Close();
    a->Free();
    }
    

    выдает ошибку 

    Цитата

     

    Unknown protocol

     Может подскажет кто-как их помирить? (Сервер переписывать не вариант :) )

  8. День добрый!

    Ситуация такова:

    1. Загружаю вебстраничку в AnsiString - тут все отлично работает как на винде так и под андроид;

    2. Пытаюсь ее отпарсить с использованием стандартных методов AnsiString- .Pos(), .SubString(), .Delete(), - на винде все работает - на андроиде -нет.

     Вопрос в следующем - чем работать на с текстом - чтобы одинаково работало под андроидом?

     

     Form2->Page=IdHTTP1->Get("http://minfin.com.ua/currency/mb/");

     Page.Delete(1,Page.Pos("<td  class=\"active\">")+19);
     Memo1->Text=Page.SubString(1,Page.Pos("<")-1);

     

×
×
  • Создать...