使用RestSharp使用RESTful API

时间:2017-07-17 00:15:53

标签: c# asp.net asp.net-web-api xamarin.forms

这个问题是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

1 个答案:

答案 0 :(得分:0)

感谢@Jason我意识到出了什么问题。当我正在处理我的网络应用程序时,我正在对待xamarin应用程序。 Web应用程序正在我的本地主机上进行测试,在那里我有我的RESTful API测试应用程序。所以一切都变得苍白无力,因为他们都在我的本地主人身上。

但是由于xamarin应用程序在手机上,它无法在localhost上找到一些东西(可能在手机上)。我在服务器上进行了测试,结果很成功!