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

iOS平台MAUI项目API传参时出现无效坐标问题

MAUI iOS平台API传递坐标小数点丢失问题解决方法

问题现象

当前API方法在Android平台运行正常,但iOS平台下传递double类型坐标时,小数点会丢失。例如传入纬度26.590354、经度49.972707,服务器端接收到的是26590354和49972707,导致坐标无效;但直接在GetStringAsync中写死字符串坐标则可正常运行。

问题原因

iOS系统的区域设置可能默认使用逗号作为小数分隔符,当double类型变量自动转换为字符串时,会将小数点替换为逗号。拼接URL后,服务器解析时会忽略逗号,导致数字被错误解析为无小数点的整数。

解决方案

方案1:强制使用不变文化格式化坐标

通过CultureInfo.InvariantCulture显式指定格式化规则,确保double转字符串时始终使用小数点作为分隔符:

using System.Globalization;

public static async Task<List<Shop>> GetShops(double customerLat, double customerLong)
{
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", Preferences.Get("accessToken", string.Empty));
    
    // 用不变文化格式化坐标,避免区域设置影响
    var latStr = customerLat.ToString(CultureInfo.InvariantCulture);
    var longStr = customerLong.ToString(CultureInfo.InvariantCulture);
    
    var response = await httpClient.GetStringAsync($"{AppSettings.ApiUrl}api/Shops?userLat={latStr}&userLong={longStr}");
    return JsonConvert.DeserializeObject<List<Shop>>(response);
}

方案2:使用查询参数构建工具(更安全)

借助HttpUtility.ParseQueryString构建查询参数,自动处理格式编码问题,避免手动拼接URL的潜在错误:

using System.Globalization;
using System.Web;

public static async Task<List<Shop>> GetShops(double customerLat, double customerLong)
{
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("bearer", Preferences.Get("accessToken", string.Empty));
    
    var queryString = HttpUtility.ParseQueryString(string.Empty);
    queryString.Add("userLat", customerLat.ToString(CultureInfo.InvariantCulture));
    queryString.Add("userLong", customerLong.ToString(CultureInfo.InvariantCulture));
    
    var url = $"{AppSettings.ApiUrl}api/Shops?{queryString}";
    var response = await httpClient.GetStringAsync(url);
    return JsonConvert.DeserializeObject<List<Shop>>(response);
}

内容的提问来源于stack exchange,提问作者Ali Alfaraj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:37:07