Xamarin RestSharp POST 方法抛出请求超时错误和名称解析错误
Xamarin RestSharp POST method throwing request timeout error and name resolution error
我正在尝试 post 来自 Xamarin android 应用程序的数据到 Netsuite RESTlet api。下面的代码使用 rest sharp 库从 asp.net Web 表单 c# 运行良好,也适用于 Postman 桌面应用程序。但是当我尝试 post data xamarin android app 时,它会抛出以下错误。
- Response Error: name resolution error
有时会抛出以下错误
request time out
var client = new RestClient("testclient.com");
var request = new RestRequest(Method.POST);
request.AddHeader("postman-token", "123-456-789-123-3654");
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", "NLAuth nlauth_account=
12345678, nlauth_email=test@test.com,
nlauth_signature=test123, nlauth_role=correctrole");
request.AddParameter(
"application/json",
"[{ \"id\": \"123\", \t\"myid\": \"111\", \t\"qty\": \"4\" } , { \"id\": \"123\", \t\"myid\": \"618\", \t\"qty\": \"6\" } \n, { \"id\": \"123\", \t\"1234\": \"2037\", \t\"qty\": \"3\" } , { \"id\": \"123\", \t\"1243\": \"126\", \t\"qty\": \"2\" }]",
ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
我记得曾经处理过这个问题,我认为解决方案是直接使用 IP 地址而不是指向所述 IP 地址的域。请试一试,如果有帮助请告诉我。
您可以尝试以下几种方法:
- 确保所有包都是最新的
- 使用 Fiddler 查看网络流量并检查发出的请求和收到的响应。教程可以是found here
- 检查您的请求 URL 是否完整(例如包括尾随的 '/' 字符),有时忘记这会导致重定向,
HttpClient
有时会出现问题
- 将
RestSharp
客户端替换为 basic System.Net.HttpClient
。此解决方案为您提供了不太高级的方法,但您可以查看问题是否仍然存在
我在 Android 模拟器的本地开发网络中遇到了同样的问题,在 Visual Studio 2019 项目中使用 Xamarin.Forms 和 RestSharp v106.6.9。一开始使用 "BaseUrl" 的简单调用:“http://MachineName:63740” 工作正常:
var restResponse = restClient.Execute(restRequest);
var content = restResponse.Content;
突然之间,它不再解析 MachineName。甚至在我重新启动 API Web 服务 运行 的服务器计算机以及消费客户端计算机之后。将 MachineName 更改为其在 "BaseUrl" 中的 IP 地址:“http://192.168.0.2:63740" and everything started working again. So Raimo's answer here was the only way to solve my problem. This thread might point to the root cause of the problem: https://issuetracker.google.com/issues/36916949
我正在尝试 post 来自 Xamarin android 应用程序的数据到 Netsuite RESTlet api。下面的代码使用 rest sharp 库从 asp.net Web 表单 c# 运行良好,也适用于 Postman 桌面应用程序。但是当我尝试 post data xamarin android app 时,它会抛出以下错误。
- Response Error: name resolution error
有时会抛出以下错误
request time out
var client = new RestClient("testclient.com");
var request = new RestRequest(Method.POST);
request.AddHeader("postman-token", "123-456-789-123-3654");
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", "NLAuth nlauth_account=
12345678, nlauth_email=test@test.com,
nlauth_signature=test123, nlauth_role=correctrole");
request.AddParameter(
"application/json",
"[{ \"id\": \"123\", \t\"myid\": \"111\", \t\"qty\": \"4\" } , { \"id\": \"123\", \t\"myid\": \"618\", \t\"qty\": \"6\" } \n, { \"id\": \"123\", \t\"1234\": \"2037\", \t\"qty\": \"3\" } , { \"id\": \"123\", \t\"1243\": \"126\", \t\"qty\": \"2\" }]",
ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
我记得曾经处理过这个问题,我认为解决方案是直接使用 IP 地址而不是指向所述 IP 地址的域。请试一试,如果有帮助请告诉我。
您可以尝试以下几种方法:
- 确保所有包都是最新的
- 使用 Fiddler 查看网络流量并检查发出的请求和收到的响应。教程可以是found here
- 检查您的请求 URL 是否完整(例如包括尾随的 '/' 字符),有时忘记这会导致重定向,
HttpClient
有时会出现问题 - 将
RestSharp
客户端替换为 basicSystem.Net.HttpClient
。此解决方案为您提供了不太高级的方法,但您可以查看问题是否仍然存在
我在 Android 模拟器的本地开发网络中遇到了同样的问题,在 Visual Studio 2019 项目中使用 Xamarin.Forms 和 RestSharp v106.6.9。一开始使用 "BaseUrl" 的简单调用:“http://MachineName:63740” 工作正常:
var restResponse = restClient.Execute(restRequest);
var content = restResponse.Content;
突然之间,它不再解析 MachineName。甚至在我重新启动 API Web 服务 运行 的服务器计算机以及消费客户端计算机之后。将 MachineName 更改为其在 "BaseUrl" 中的 IP 地址:“http://192.168.0.2:63740" and everything started working again. So Raimo's answer here was the only way to solve my problem. This thread might point to the root cause of the problem: https://issuetracker.google.com/issues/36916949