You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端TNetHTTPClient获取JSON失败,求排查线索

问题:Delphi TNetHTTPClient在Android端无法发起请求

我编写了一个从URL获取JSON的函数,在Windows环境测试时运行正常,但将项目打包为APK并部署到Android设备后无法工作,且无任何报错信息。

我的代码:

function TfrMain.getJSON(url: string): TJSONValue;
var
  HttpClient: TNetHTTPClient;
  strJSON: ansistring;
  HTTPResult: IHTTPResponse;
  objJSON: TJSONObject;
begin
Memo1.Lines.Add('getJSON1');
HttpClient := TNetHTTPClient.Create(self);
Memo1.Lines.Add('getJSON2');
try
  Memo1.Lines.Add(url);
  HTTPResult := HttpClient.Get(url);
  Memo1.Lines.Add('getJSON3');
finally
  HttpClient.Free;
end;
strJSON := '{"data":' + HTTPResult.ContentAsString() + '}';
Memo1.Lines.Add('getJSON4');
Memo1.Lines.Add(strJSON);
objJSON := TJSONObject.ParseJSONValue(strJSON) as TJSONObject;
Memo1.Lines.Add('getJSON5');
result := objJSON.Get('data').JsonValue as TJSONArray;
Memo1.Lines.Add('getJSON6');
end;

排查情况:

我使用Memo1.Lines.Add进行错误追踪,发现代码在try块内的Memo1.Lines.Add(url);语句处停滞,后续代码均未执行。请问TNetHTTPClient对象在Android端无法正常工作吗?求相关排查线索。


排查线索:

  • 权限与明文请求限制:Android 9及以上默认禁止明文HTTP请求,若URL是http://开头,需在AndroidManifest.xml中添加android:usesCleartextTraffic="true";同时必须确保已添加网络权限:<uses-permission android:name="android.permission.INTERNET" />。
  • 主线程阻塞问题:Android不允许在UI主线程发起网络请求,否则会触发ANR(应用无响应)导致卡住。需将网络请求逻辑放到后台线程执行,比如用TThread.CreateAnonymousThread包裹。
  • 完善异常捕获:现有代码未捕获网络请求可能抛出的异常,Android端的异常可能不会直接反馈到UI层。建议在try块内添加except分支捕获并记录异常:
    try
      Memo1.Lines.Add(url);
      HTTPResult := HttpClient.Get(url);
      Memo1.Lines.Add('getJSON3');
    except
      on E: Exception do
        Memo1.Lines.Add('请求异常:' + E.Message);
    end;
    
  • TNetHTTPClient参数配置:Android端可能需要调整超时时间或SSL设置。可尝试设置超时:HttpClient.ConnectionTimeout := 5000;(5秒);若为HTTPS请求,可临时关闭SSL验证测试(正式环境不建议):HttpClient.SSLOptions.VerifyPeer := False;。
  • 网络连通性验证:用Android设备自带浏览器打开目标URL,确认设备能正常访问该地址,排除网络环境、域名解析或服务器防火墙的问题。

内容的提问来源于stack exchange,提问作者Merry Ricard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:30:33