Конференция "Прочее" » Открыть URL в браузере используя POST-запрос
 
  • SergP © (09.06.17 12:49) [0]
    Нужно открыть URL, выполнивши POST-запрос, желательно в браузере по умолчанию. Гугление результатов не дало, кроме нескольких аналогичных вопросов без ответов.

    Есть некий сайт. Пусть для примера это будет mysite.com (на самом деле он другой). И его нужно открыть POST-запросом, передавши некие данные, пусть для примера это будет VAR1=77777

    С IE я когда-то делал так:

    procedure TForm1.Button2Click(Sender: TObject);
    var
     S:string;
     ie:variant;
     flags,TargetFrameName,PostData,Headers:OleVariant;
    begin
     ie:=CreateOleObject('InternetExplorer.application');
     ie.Silent := False;
     s:='VAR1=77777';
     Headers:='Content-Type: application/x-www-form-urlencoded'#10#13;
     PostData:=VarArrayCreate([1,Length(s)+1],varByte);
     System.move(S[1],VarArrayLock(PostData)^,length(s)+1);
     VarArrayUnlock(PostData);
     ie.navigate('http://mysite.com',flags,targetFrameName,PostData,Headers);
     ie.visible:=true;
    end;



    Но IE сейчас мало кто использует, посему у многих стоят старые его версии. Например с 8-й версией нужный сайт не работает.

    Пытался использовать Firefox, но сделать нужное получилось только таким образом:


    procedure TForm1.Button3Click(Sender: TObject);
    var
     datastr:PAnsiChar;
     er:integer;
    begin
    datastr:='data:text/html,<form%20id=%22fwm%22%20action=%22'
    +'http://mysite.com%22%20method=%22POST%22><input%20type=%22hidden%22%20name=%22VAR1%22%20value=%2277777%22>%20'
    +'</form><script%20type=%22text/javascript%22>document.getElementById(%22fwm%22).submit()%20</script>';
    er:=ShellExecute (Form1.Handle, nil, 'firefox', datastr, nil, SW_SHOWNORMAL);
    if er<33 then ShowMessage('Ошибка'+inttostr(er));
    end;



    Опять-таки имеются проблемы:
    1. У пользователя может firefox не быть установленным. А другие браузеры не факт что поддерживают такую схему ( data:URI ).
    Да и такой способ не позволяет использовать браузер по умолчанию. Если не указывать чем мы хотим открыть data:URI, то в отличии от других схем c протоколами http, https и пр. оно не открывается браузером вообще.
    2. В момент открытия браузера в адресной строке видно содержимое переменной datastr, что тоже не очень хорошо.

    Есть ли какие-то еще мысли по поводу того как сотворить нужное? Ну возможно идеального решения и не существует, но может как-то можно что-то получше придумать?
  • DayGaykin © (09.06.17 14:05) [1]
    Первое что приходит в голову, сделать сервис в интернете, который будет превращать GET в POST
  • SergP © (09.06.17 15:03) [2]

    > DayGaykin ©   (09.06.17 14:05) [1]
    >
    > Первое что приходит в голову, сделать сервис в интернете,
    >  который будет превращать GET в POST


    Если в интернете делать свой сайт, то задача решается проще и надобность в подобном извращении вообще отпадает. Но хотелось бы обойтись без привязки к какому-нить своему ресурсу в инете.
  • rrrrrr © (09.06.17 15:11) [3]
    если ты большой любитель гланд через анус, то сделай сначала пост через xmlhttprequest
    на него вернется текстовый респонс который ты можешь загрузить в браузер через протокол эбаут-бланк.
  • rrrrrr © (09.06.17 15:14) [4]
    В момент открытия браузера в адресной строке видно содержимое переменной datastr, что тоже не очень хорошо.


    один мой знакомый погромист когда-то искренне считал,
    что при посте когда аргументы не в урл, то
    "все надежно зашифровано и никто ни в жисть  не догадается"
  • SergP © (09.06.17 16:08) [5]

    > rrrrrr ©   (09.06.17 15:14) [4]
    >
    > В момент открытия браузера в адресной строке видно содержимое
    > переменной datastr, что тоже не очень хорошо.
    >
    >
    > один мой знакомый погромист когда-то искренне считал,
    > что при посте когда аргументы не в урл, то
    > "все надежно зашифровано и никто ни в жисть  не догадается"


    Я не стремлюсь к идеальному варианту когда "никто ни жисть не догадается".
    Но количество тех, "кто догадается" лучше все-же свести к минимуму.
 
Конференция "Прочее" » Открыть URL в браузере используя POST-запрос
Есть новые Нет новых   [134430   +5][b:0][p:0.001]