这个问题是this问题的后续问题。
所以,我很难让RestSharp在Xamarin.Forms PCL中工作。我的测试API有Numero类和NumeroController类(等等)。
NÚMERO:
public class Numero
{
public int id { get; set; }
public int numero { get; set; }
}
NumeroController:
public IEnumerable<Numero> Get()
{
List<Numero> numeros = new List<Numero>();
numeros.Add(new Numero { id = 1, numero = 1 });
numeros.Add(new Numero { id = 2, numero = 2 });
numeros.Add(new Numero { id = 3, numero = 3 });
return numeros;
}
在Web应用程序中,使用相同的Numero类和带有文本框和测试按钮的webform:
using RestSharp;
List<Numero> numero;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
var restClient = new RestClient(new Uri("http://localhost:52649/"));
var request = new RestRequest("api/numero", Method.GET);
var customers = restClient.Execute<List<Numero>>(request);
numero = customers.Data;
TextBox1.Text = numero[1].numero.ToString();
}
在Xamarin.Forms PCL中,还有一个Numero类和一个按钮和标签,以及:
using RestSharp.Portable.HttpClient;
using RestSharp.Portable;
List<Numero> numeros;
public MainPage()
{
InitializeComponent();
}
private async void btn_teste_Clicked(object sender, EventArgs e)
{
numeros=await GetNumeros();
}
private async Task<List<Numero>> GetNumeros()
{
var restClient = new RestClient(new Uri("http://localhost:52649/"));
var request = new RestRequest("api/numero", Method.GET);
var customers = await restClient.Execute<List<Numero>>(request);
lbl_teste.Text = customers.Data.ToString();
return customers.Data;
}
事情是......我可以让它在网络应用程序上运行得很好,但在Xamarin应用程序上我总是得到一个例外&#34;发生了未处理的异常。&#34;
我很感激任何给予的帮助。我为什么会在一个平台上工作而另一个平台疯狂。我意识到Xamarin.Forms PCL是非常严格的,但据说RestSharp Portable是为了这个目的而开发的。也许它在Xamarin.Forms PCL上有点不同?
编辑:这是调试输出:
InspectorDebugSession(22):StateChange:开始 - &gt; EntryPointBreakpointRegistered InspectorDebugSession(22):构造 Android应用程序正在调试。 InspectorDebugSession(22): HandleTargetEvent:TargetReady已加载程序集: /storage/emulated/0/Android/data/App1.Android/files/.override/App1.Android.dll 装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/App1.dll 装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/FormsViewGroup.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Newtonsoft.Json.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/RestSharp.Portable.Core.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/RestSharp.Portable.HttpClient.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Android.Support.Animated.Vector.Drawable.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Android.Support.Design.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Android.Support.v4.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Android.Support.v7.AppCompat.dll [External]加载程序集: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Android.Support.v7.CardView.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Android.Support.v7.MediaRouter.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Android.Support.v7.RecyclerView.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Android.Support.Vector.Drawable.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Forms.Core.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Forms.Platform.Android.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Forms.Platform.dll [外部]装载组件: /storage/emulated/0/Android/data/App1.Android/files/.override/Xamarin.Forms.Xaml.dll [外部]加载程序集:Mono.Android.dll [外部]已加载 程序集:Java.Interop.dll [外部]加载程序集: System.Runtime.dll [外部]已解决的挂起断点 &#39; Android.Runtime.JNIEnv.RegisterJniNatives(System.IntPtr,int, System.IntPtr,System.IntPtr,int)&#39;到[0x0](没有调试符号)。加载 assembly:System.Collections.Concurrent.dll [External]已加载 程序集:System.Threading.dll [外部]加载程序集: System.Runtime.InteropServices.dll [外部]加载程序集: System.Reflection.dll [外部]加载程序集: System.Collections.dll [外部]加载程序集:System.Linq.dll [外部]加载程序集:System.Core.dll [外部]已加载 程序集:System.Runtime.Extensions.dll [外部]加载程序集: System.Reflection.Extensions.dll [外部] InspectorDebugSession(22): HandleTargetEvent:TargetHitBreakpoint InspectorDebugSession(22): StateChange:EntryPointBreakpointRegistered - &gt; EntryPointBreakpointHit InspectorDebugSession(22):AgentBridge.InjectAssembly: /storage/emulated/0/Android/data//files/.override/inspector-temp/Xamarin.Interactive.dll InspectorDebugSession(22):AgentBridge.InjectAssembly: /storage/emulated/0/Android/data//files/.override/inspector-temp/Xamarin.Interactive.Android.dll InspectorDebugSession(22):StateChange:EntryPointBreakpointHit - &gt; BreakdanceInvoking已加载程序集: /storage/emulated/0/Android/data/files/.override/inspector-temp/Xamarin.Interactive.dll [外部]装载组件: /storage/emulated/0/Android/data/files/.override/inspector-temp/Xamarin.Interactive.Android.dll [外部]线程已启动:#3 InspectorDebugSession(22): HandleTargetEvent:ThreadStarted InspectorDebugSession(22): StateChange:BreakdanceInvoking - &gt; BreakdanceStarted 07-17 01:19:56.019我/艺术(507):迟到-Xcheck:jni 07-17 01:19:56.218 W / monodroid(507):创建公共更新目录:
/data/user/0/App1.Android/files/.__override__
07-17 01:19:56.218 W / monodroid(507):使用覆盖路径: /data/user/0/App1.Android/files /。覆盖 07-17 01:19:56.218 W / monodroid(507):使用覆盖路径: /storage/emulated/0/Android/data/App1.Android/files / 替换 07-17 01:19:56.219 W / monodroid(507):试图加载sgen: /data/user/0/App1.Android/files/.override/libmonosgen-2.0.so 07-17 01:19:56.219 W / monodroid(507):试图加载sgen: /storage/emulated/0/Android/data/App1.Android/files/.override/libmonosgen-2.0.so 07-17 01:19:56.219 W / monodroid(507):试图加载sgen: /data/app/App1.Android-1/lib/arm/libmonosgen-2.0.so 07-17 01:19:56.219 W / monodroid(507):试图加载sgen: /data/user/0/App1.Android/files/.override/links/libmonosgen-2.0.so 07-17 01:19:56.228 W / monodroid-debug(507):试图初始化 带选项的调试器: --debugger剂=运输= dt_socket,日志级别= 0,地址127.0.0.1 =:29308,服务器= Y,嵌入= 1 07-17 01:19:56.238 W / monodroid-debug(507):接受标准输出 连接:25 07-17 01:19:57.148 W / monodroid-gc(507):GREF GC 门槛:46080 07-17 01:19:57.170 W / monodroid(507):呼唤 托管运行时init已加载程序集:System.ObjectModel.dll [外部]加载程序集:System.dll [外部]加载程序集: MonoDroidConstructors [外部] 07-17 01:19:58.860 W / Mono(507): 加载程序集System.Xml.ReaderWriter v4.0.0.0的请求是 重新映射到v2.0.5.0加载程序集:System.Threading.Tasks.dll [外部]加载程序集:System.Xml.ReaderWriter.dll [External] 加载程序集:System.Xml.dll [外部]加载程序集: System.IO.dll [External]加载程序集:System.Linq.Expressions.dll [外部]加载程序集:System.Resources.ResourceManager.dll [外部]加载程序集:System.Globalization.dll [外部]已加载 程序集:System.Dynamic.Runtime.dll [外部] 07-17 01:19:59.453 W / Mono(507):加载程序集的请求 System.Xml.ReaderWriter v4.0.0.0已重新映射到v2.0.5.0已加载 assembly:System.Text.RegularExpressions.dll [External] Thread 开始:#4 InspectorDebugSession(22): HandleTargetEvent:ThreadStarted线程已启动:#5 InspectorDebugSession(22):HandleTargetEvent:ThreadStarted Thread 开始:#6 InspectorDebugSession(22): HandleTargetEvent:ThreadStarted Thread已启动:#7 InspectorDebugSession(22):HandleTargetEvent:ThreadStarted已加载 程序集:System.ComponentModel.dll [外部] 07-17 01:20:00.929 W / art(507):JNI RegisterNativeMethods:尝试注册0 原生方法 md5b60ffeb829f638581ab2bb9b1a7f4f3f.Platform_DefaultRenderer 07-17 01:20:00.954 W / art(507):JNI RegisterNativeMethods:尝试 注册0本机方法 md5b60ffeb829f638581ab2bb9b1a7f4f3f.LabelRenderer 07-17 01:20:01.087 W / art(507):JNI RegisterNativeMethods:尝试注册0 md5270abb39e60627f0f200893b490a1ade.ViewRenderer_2的原生方法 07-17 01:20:01.184 I / HwSecImmHelper(507): mSecurityInputMethodService为空07-17 01:20:01.297 E / HAL( 507):load:id = gralloc!= hmi-&gt; id = gralloc 07-17 01:20:01.298 I / OpenGLRenderer(507):初始化的EGL,版本1.4 07-17 01:20:01.310 W / OpenGLRenderer(507):加载: so = / system / lib / libhwuibp.so 07-17 01:20:01.310 W / OpenGLRenderer( 507):dlopen失败:library&#34; /system/lib/libhwuibp.so"未找到 07-17 01:20:01.310 W / OpenGLRenderer(507):初始化二进制程序 缓存:加载失败07-17 01:20:01.317 E / HAL(507):加载: id = gralloc!= hmi-&gt; id = gralloc已解决的挂起断点at &#39; MainPage.xaml.cs中:27,1&#39;无效 App1.MainPage.d__3.MoveNext()[0x0000e]。装载组件: System.Net.Primitives.dll [外部] InspectorDebugSession(22): HandleTargetEvent:TargetHitBreakpoint InspectorDebugSession(22): HandleTargetEvent:TargetStopped InspectorDebugSession(22): HandleTargetEvent:TargetStopped Loaded程序集: System.Diagnostics.Debug.dll [外部]加载程序集: System.Diagnostics.Tools.dll [外部]加载程序集: System.Net.Http.dll [外部] 07-17 01:20:08.302 W / Mono(507): 加载了程序集System.Net.Http v4.0.0.0的请求已重新映射 到v2.0.5.0加载程序集:System.Text.Encoding.dll [外部] InspectorDebugSession(22):HandleTargetEvent:TargetStopped已加载 程序集:System.Text.Encoding.Extensions.dll [外部] InspectorDebugSession(22):HandleTargetEvent:TargetStopped已加载 程序集:Mono.Security.dll [外部] 07-17 01:20:10.122 I / Choreographer(507):跳过280帧!申请可能是 在主线程上做了太多工作。 InspectorDebugSession(22): HandleTargetEvent:UnhandledException发生未处理的异常。InspectorDebugSession(22):Disposed InspectorDebugSession(22): HandleTargetEvent:TargetExited
答案 0 :(得分:0)
感谢@Jason我意识到出了什么问题。当我正在处理我的网络应用程序时,我正在对待xamarin应用程序。 Web应用程序正在我的本地主机上进行测试,在那里我有我的RESTful API测试应用程序。所以一切都变得苍白无力,因为他们都在我的本地主人身上。
但是由于xamarin应用程序在手机上,它无法在localhost上找到一些东西(可能在手机上)。我在服务器上进行了测试,结果很成功!