小编Adr*_*off的帖子

为什么indy返回不可读的数据,但chrome加载它很好?

我正在尝试在我的一个GET游戏服务器的RESTAPI上做一个请求.当我在chrome中加载它时会加载正确的json响应但是当我尝试用indy做它时它只给了我一堆不可读的文本.

请求的URL:http://129.232.180.125:28019/deaths.json

Chrome响应:

Chrome响应

Indy响应:

Y;9[ÿÍZË7¼ç3öìDQ%ÿJÃÚØ,Öw   òï§IµzvXÓö{Ab¿ÿöÏÝ»÷Ä!¾»ûûîýBó»»÷ßOwïï><¼îþ}§ På¢&È÷ÇÇÓË
gP¤@¹(¬Dv&©ÙEµ¸®D"`»@ëJ¥E\¦£??Þ?Ù@%¤3¨µ òrÿaCHZÝÀÕ
¯[%ö1cÓÔB)QV¡÷àõ=¢oÅt¥þóR§Ó§§Ï®Ô¶â*ëEu<wKÜôiýUØ^VµcÓ@vêâ»ÈR©hPædÛ=û±ô~¡;±8¢¢ÒtÇ/§û
Si¿·Õ
Zô1-W¥²¾KdP¡tÇXýc--[ÛàÔ-Go¼aI4]ñôãÏǯÏ_& h¶@5Gá0Ú#!`u.éöæà¿i³ÇhFÜ]Q´µjÁ
d¼Ê%½|ÔRØ\­¡Ókbê;Â$`¹^ìX»Ó`ϢѤù»   i2S$Ýûöõ¯ÉÑ2    D(,öæÛý§ûÙ¯j\-AOÙ^&Gä£WK¥2\ÙW[%a»a\Ò' U½4ßß+¯>bV«ÏêUçq¡õÏIÜ
,1×çiJ¾¸¸^Ðh}_æéê{²Ú°pp¼²KÖ÷ÞNÄIß¼D÷W+K3ËûÔz:}ÚÞ5
SB^"ÕKªGè¸+¾ß^~$Õâ³6Tõ]2Õßr9¸%eàYYUrsJÏ`Êä³ë'£t8#®AB¨KϹëOAe9V ×Ís-£¬Ó鬺ùÜ\)µµ©±¢xÜj« ½ê(JRâÜ>\<M´@6Xd°ý~®i ÄCõBe;&©l³"¦}.uUè5(ÝE®V;BìðùôtúöðqÆÅ8~cÜ¡}{\h9Í©¡0²]Cèl¯s%qeÅô{Ø]zOöÞ|W-ÆöÎ%媫¦@çÎл[jѶÊÞÒÙq¤¸qZÛ/îÕ=KTÓ³ÿÒ=Go@Îì6*Z¯\W7¡ê!rM´'£¸ÇR­»[G%ëp"?+²q?!ÔU{n,QâsðÚ9÷Þòì³H¡#f<Î.ÛÂѲ­Ät$u\9KoËGpE9b+ NsQÏ>ÉIiÒQs8ôòVÖMó.Þ÷ex ½½îx!RNÇZH?×b@ Ó$v¥_SfçF«Q®n`|à`«T­®Ð¦©¸×5*<?qC´/ø©¿ÑJ¬ªï´´+ýÑHjiK( ;¤øÓA#mýH߬5v ¡µR
´RI{ÊPAn,&æF ,&Õ/ônÓÚ¨­oÄÀùYó}DUÿêà}C$e õ^LYæªYßÍX«Z2»ËeOæVqWvrW1ÚP«¿_kÆ-¢¢2Ar«ö©]x¢|4Ñ¿¯Y[¹">´¸(lÉÆÓÌå/BÙ!ìPGr£`¶Ê
[!ªóèsfÄt+­.v.5_jÎê'Ô8Õ
Ö1ÒøMÜÑõâ[®ÇÄ)ãZYàÜ;Q!Ëa2Û^Zìçsá¹Ø^´QZbKnk9&ÄKºý¼ý®Úú11pÀ¦Eç°¿9r¾«ÿ®yýÆà"ø×
 (ù ?Ko¼Þ!Τ¸ò¿^/ºo¼½åzãß*A9aãÔ°¥Ù8umÁàËuni(
    '-®®DÕêüý¸o¢z­äݲé/lßþËÁi-ö:IhÙ8£i?|Û×RÐØï/ÐÀ,I
°Ù¥xXIRê0¹\x9séU=ªajä ^Æ£À±b¼$ÞP6<fF!µ¡Àßù!ûí7t¨¬XRÀJï\VãØsþð»b¨´7B` FýÀJÕ´F 
6Ë

èög»&·ã«¶ÛýAuR®ÝåL¬.YÌÄÿ£0æÀ%dÅ)²dhs´k¯.Ûg%ÅÂ.sâ¬Úé
zµ½ ;¸Z}»ÕUH«;ébÿ£j£%³S÷ú~X´@ýgý:¹½ 0w@ºØHâ³·,`!«G(]íä,Q¡NØm¢Î°,ÔY`Ùi;Ò¦×b¤×?BûMd¡Çdª <ï"QÕýWÏ®µ±× "6'3ý¹¦wþGSCt7Ùäk Ne¾ªÑ¿Ò(múS Ô$DifA{ª*ö¥(-gg¶a³~v(dê©=Om+á½üí±6®yf°1²ÐNi(y`B»ò¦¹ÃàuS!kµ¡¡i÷6¦   hÖ½;r"¢R»yÆ&OªoE·VU´¹)_Q9Ç¥2lÑÀâîUhñ~¼4óß4"\µnøæèî½5Ç00fúiPàýLØ~¯é§?_HÙ&Í÷;Ynnw¯8àoü¬¼^+2
Run Code Online (Sandbox Code Playgroud)

我的代码:

mmo1.Lines.Text := idhtp1.Get('http://129.232.180.125:28019/deaths.json');

delphi rest get indy firemonkey

9
推荐指数
1
解决办法
171
查看次数

动态制作indy使用TLSv1.2

GitHub已停止支持TLS v1.0和v1.1(https://githubengineering.com/crypto-deprecation-notice/),因此我的代码不再想从中下载.我已经检查过,似乎我需要让Indy使用TLS v1.2,如下所述:使用Indy 10 IdHTTP和TLS 1.2.

我已经将OpenSSL DLL更新为http://indy.fulgan.com/SSL/中的最新版本,并且Indy似乎加载它们很好,但我仍然收到错误.

我得到的错误:

截图

如果我在工作线程中动态创建Indy对象,如何让Indy使用TLS v1.2?

现行代码:

constructor TDownload.Create(CreateSuspended: Boolean; aurl, afilename: string);
begin
  inherited Create(CreateSuspended);
  httpclient := TIdHTTP.Create(nil);
  httpclient.Request.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36';
  httpclient.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(httpclient);
  httpclient.HandleRedirects := True;
  httpclient.OnWorkBegin := idhttp1WorkBegin;
  httpclient.OnWork := idhttp1Work;
  url := aurl;
  filename := afilename;
end;
Run Code Online (Sandbox Code Playgroud)

delphi openssl indy indy10 delphi-10.2-tokyo

5
推荐指数
1
解决办法
1435
查看次数

firemonkey 中的透明表单和样式书

我有一个应用程序,其中包含多个样式手册,其中包含来自 delphistyles.com 的样式。我想添加一个轨迹栏,以允许用户在运行时更改表单的透明度,就像在 VCL 中使用 alphablend 所做的那样。

这篇文章:FireMonkey 中的 AlphaBlend说道:

要使表单背景半透明,您应该将表单透明度属性设置为 true 并使用带有 alpha 值的 Fill.Color,如 $AAFFFFFF(with Fill.Kind = bkSolid)。在这种情况下,窗体边框变得不可见(至少在 Delphi XE2 中)

但是,当我的表单有样式手册时,我该如何实现这一目标呢?

delphi alpha-transparency firemonkey firemonkey-style

1
推荐指数
1
解决办法
2120
查看次数

为什么当进程 ID 不再运行时 OpenProcess() 返回非 0 值

我开始使用其他应用程序的新实例,CreateProcess实例和我结束了保存PID,这样我可以在以后检查如果进程仍在运行。

我正在使用以下方法来检查它是否正在运行:

procedure TfrmRSM.Button1Click(Sender: TObject);
begin
  var
  ahandle := OpenProcess(PROCESS_ALL_ACCESS, true, aPID);

  if ahandle = 0 then
    ShowMessage('is not running')
  else
    ShowMessage('is running');

  CloseHandle(ahandle);
end;
Run Code Online (Sandbox Code Playgroud)

0当进程不再运行时,上面的代码应该返回,但它仍然返回一个大于0

使用 CreateProcess 后我正在关闭句柄

如果我使用的方法不正确,有什么正确的方法可以检查 PID 是否正在运行?我只能找到使用应用程序名称的方法。

delphi delphi-10.4-sydney

1
推荐指数
1
解决办法
206
查看次数

Firedac SQLite 返回错误值

我的 SQLite 数据库包含表players. 在数据库浏览器中,表中的数据是正确的,但是在检索数据时,它返回不同的值。

数据库中的值:76561198113034550,返回值:152768822。我通过以下方式获取价值:

qryPlayers.Close;
qryPlayers.SQL.Text := 'SELECT * FROM players';
qryPlayers.Open;

playerID := qryPlayers.FieldByName('steamid').Value; // .AsString returns the same value
Run Code Online (Sandbox Code Playgroud)

这是什么原因造成的?我该如何解决?

delphi sqlite delphi-11-alexandria

0
推荐指数
1
解决办法
295
查看次数