我正在用PCL创建我的第一个xamarin项目 .
我创建了带有Get Response的WebApi2并在我的本地服务器上发布,该工作正常并正确提供JSON响应
URL : http://test.propertytaxapi.com/api/ward
响应:[{“id”:1,“zone_id”:1,“ward_no”:“1”},{“id”:2,“zone_id”:1,“ward_no”:“2”},{“id “:3”,zone_id “:1,” ward_no “:” 3 “},{” ID “:4”,zone_id “:1,” ward_no “:” 4 “},{” ID “:5”,zone_id “:1,” ward_no “:” 5 “},{” ID “:6,” zone_id “:1,” ward_no “:” 6" }]
但是当我试图在我的Xamarin项目中实现它并称之为 .
public async Task<List<Ward>> GetData()
{
using (var client = new HttpClient())
{
try
{
client.BaseAddress = new Uri("http://test.propertytaxapi.com/api");
var response = await client.GetAsync("ward");
response.EnsureSuccessStatusCode();
var placesJson = response.Content.ReadAsStringAsync().Result;
Ward wardData = new Ward();
if (placesJson != "")
{
var wlists= JsonConvert.DeserializeObject<List<Ward>>(placesJson);
wardList = wlists.ToList();
}
}
catch (Exception)
{
return null;
}
}
return wardList;
}
我在这一行得到例外: -
var response = await client.GetAsync("ward");
Exception:
11-02 14:11:29.968 E / mono(2954):11-02 14:11:29.968 E / mono(2954):Unhandled Exception:11-02 14:11:29.968 E / mono(2954):System . Net.Http.HttpRequestException:发送请求时发生错误---> System.Net.WebException:错误:NameResolutionFailure 11-02 14:11:29.968 E / mono(2954):at System.Net.HttpWebRequest.EndGetResponse( System.IAsyncResult asyncResult)[0x00058] in <6c708cf596db438ebfc6b7e012659eee>:0 11-02 14:11:29.968 E / mono(2954):at System.Threading.Tasks.TaskFactory 1[TResult].FromAsyncCoreLogic (System.IAsyncResult iar, System.Func
2 [T,TResult] endFunction,System.Action 1[T] endAction, System.Threading.Tasks.Task
1 [TResult] promise,System.Boolean requiresSynchronization)[0x0000f] in <896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.968 E / mono(2954):---从抛出异常的上一个位置开始的堆栈跟踪结束 - - 11-02 14:11:29.968 E / mono(2954):在System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()[0x0000c] in <896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.968 E / mono( 2954):在System.Runtime.CompilerSe rvices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task任务)[0x0003e] in <896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.968 E / mono(2954):at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification( System.Threading.Tasks.Task任务)[0x00028]在<896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.968 E / mono(2954):at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(System.Threading.Tasks . 任务任务)[0x00008]在<896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.968 E / mono(2954):at System.Runtime.CompilerServices.ConfiguredTaskAwaitable 1+ConfiguredTaskAwaiter[TResult].GetResult () [0x00000] in <896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.968 E/mono ( 2954): at System.Net.Http.HttpClientHandler+<SendAsync>d__63.MoveNext () [0x00450] in <7736395a6c71409691a34accfc621095>:0 11-02 14:11:29.968 E/mono ( 2954): --- End of inner exception stack trace --- 11-02 14:11:29.976 E/mono-rt ( 2954): [ERROR] FATAL UNHANDLED EXCEPTION: System.Net.Http.HttpRequestException: An error occurred while sending the request ---> System.Net.WebException: Error: NameResolutionFailure 11-02 14:11:29.976 E/mono-rt ( 2954): at System.Net.HttpWebRequest.EndGetResponse (System.IAsyncResult asyncResult) [0x00058] in <6c708cf596db438ebfc6b7e012659eee>:0 11-02 14:11:29.976 E/mono-rt ( 2954): at System.Threading.Tasks.TaskFactory
1 [TResult] .FromAsyncCoreLogic(System.IAsyncResult iar,System . Func 2[T,TResult] endFunction, System.Action
1 [T] endAction,System.Threading.Tasks.Task 1[TResult] promise, System.Boolean requiresSynchronization) [0x0000f] in <896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.976 E/mono-rt ( 2954): --- End of stack trace from previous location where exception was thrown --- 11-02 14:11:29.976 E/mono-rt ( 2954): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.976 E/mono-rt ( 2954): at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.976 E/mono-rt ( 2954): at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.976 E/mono-rt ( 2954): at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.976 E/mono-rt ( 2954): at System.Runtime.CompilerServices.ConfiguredTaskAwaitable
1 ConfiguredTaskAwaiter [TResult] .GetResult()[0x00000] in <896ad1d315ca4ba7b117efb8dacaedcf>:0 11-02 14:11:29.976 E / mono-rt(2954) :在System.Net.Http.HttpClientHandler d__63.MoveNext()[0x00450] in <7736395a6c71409691a34accfc621095>:0 11-02 14:11:29.9 76 E / mono-rt(2954):---内部异常堆栈跟踪结束---
请建议我获得响应的解决方案
1 回答
client.BaseAddress = new Uri(“http://test.propertytaxapi.com/api/”);
在基址的末尾添加反斜杠 . 试试上面的uri