Школоло / Говнокод #26060 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
procedure TForm1.Button1Click(Sender: TObject);
  var
    RequestBody,SResponseBody: TStringStream;

    ResponseBody: string;
begin


  try
     RequestBody := TStringStream.Create('{"login":"user","password":"pass999"}') ;
    httpconn.HandleRedirects:=TRUE;
    IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method:=sslvSSLv23;
    //httpconn.Host:='api.owencloud.ru';
    httpconn.Request.Accept:='application/xml';
    httpconn.Request.ContentLength:=68;
    httpconn.Request.ContentType:='application/x-www-form-urlencoded';

    ResponseBody:=httpconn.Post('https://api.owencloud.ru/v1/auth/open', RequestBody);
    SResponseBody:=TStringStream.Create(httpconn.Post('https://api.owencloud.ru/v1/auth/open', RequestBody));
    memo1.Text:=utf8toansi(ResponseBody);
    xmldocument1.LoadFromStream(SResponseBody);
 finally
    RequestBody.Free;
    SResponseBody.Free;
 end;
end;

Передача в мемо волшебна, а в xml так вообще виртуозна

Запостил: untitled_001 untitled_001, (Updated )

Комментарии (15) RSS

  • ух ты, дельфи

    Пепси, пейджер, эм-ти-ви
    Ответить
  • 1. Антипаттерн «Волшебная кнопка».

    2. '{"login":"user","password":"pass999 "}' несильно похоже на 'application/x-www-form-urlencoded'. httpconn умеет перекодировать JSON в x-www-form-urlencoded?

    3. Магическая константа: httpconn.Request.ContentLength:=68;
    Откуда она взялась? И как её корректировать, если вдруг пароль сменится?

    4. Вызов httpconn.Post('https://api.owencloud.ru/v1/auth/open', RequestBody) у нас два раза? Почему результат первого помещается в мемо, а второго — в XML?
    Ответить
  • try
    ..
     finally
        RequestBody.Free;
        SResponseBody.Free;
     end;

    Няшненько. Здесь Паскаль выглядит очень даже не дерьмово.

    >TStringStream
    >finally
    Паскаль с запахом жабизны.
    Ответить
    • Во-1 нет мусорных скобок, во-2 идиоматичный метод Free вместо крестоблядских delete.

      Но всё-таки это же не Ява, могли бы и RAII завезти.
      А если уж косить под яву, то try-with-resources, чтобы ресурсы автоматически освобождать.
      Ответить
    • Блок try... finally впервые появился в «Delphi 1.0». С того момента прошла четверть века.

      Эту конструкцию потом унаследовали все реализации языка «Object Pascal» («Free Pascal», «PascalABC», «Oxygene» и ещё несколько компиляторов, которые оказались тупиковыми ветвями). Да, творение «Борланда» можно называть новым языком программирования.
      Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8