Xamarin Forms中Post请求携参调用Rest API求助
解决Xamarin Forms中RestSharp发送JSON请求的问题
嘿,作为Xamarin Forms新手,调用REST API时遇到这类问题太正常了!我来帮你把代码补全,确保能正确发送你需要的搜索参数,同时搞定Authorization Bearer授权的问题。
首先,先给你补全完整的可运行代码,再拆解关键注意点:
using RestSharp; using System.Threading.Tasks; // 建议用异步方法,避免阻塞UI线程 public async Task CallQuickSearchAPI(string bearerToken) { // 初始化RestClient var client = new RestClient("http://localhost/NameAPI/api/V1/getquicksearchresults"); var request = new RestRequest(Method.POST); // 添加Authorization授权头 request.AddHeader("Authorization", $"Bearer {bearerToken}"); // 显式指定Content-Type,确保API能识别JSON格式请求体 request.AddHeader("Content-Type", "application/json"); // 用强类型对象定义搜索参数(比手动拼JSON更安全易维护) var searchParams = new { busObIds = new[] { "8102508" }, searchText = "John" }; // 将对象自动序列化为JSON并添加到请求体 request.AddJsonBody(searchParams); try { // 发送异步请求并获取响应 var response = await client.ExecuteAsync(request); // 处理响应结果 if (response.IsSuccessful) { // 请求成功,可解析返回的响应内容 var resultContent = response.Content; // 这里添加你的后续业务逻辑... } else { // 请求失败,查看错误详情 var errorInfo = $"请求失败: {response.StatusCode} - {response.ErrorMessage}"; // 可弹窗提示或记录日志 } } catch (System.Exception ex) { // 捕获网络或其他异常 var exceptionInfo = $"发生异常: {ex.Message}"; // 处理异常逻辑 } }
下面是几个关键细节要注意:
- 避免手动拼接JSON:用匿名/强类型对象配合
AddJsonBody,RestSharp会自动完成序列化,减少拼写错误,也方便后续修改参数。 - 异步调用优先:Xamarin Forms是UI框架,同步请求会阻塞UI导致卡顿,
ExecuteAsync能保证界面流畅。 - 显式设置Content-Type:虽然
AddJsonBody可能自动添加,但手动指定application/json能避免API因识别不了请求格式而报错。 - 完善错误处理:通过
response.IsSuccessful判断请求状态,加上try-catch捕获网络异常,能快速定位问题(比如授权失败、网络不通等)。
如果遇到具体的错误提示(比如授权无效、参数不被API识别),可以把错误信息贴出来,能更精准地帮你排查~
内容的提问来源于stack exchange,提问作者Jones
相关产品推荐
相关产品推荐

