Xamarin Watch - 使用 Web 服务 (Android)

Posted

技术标签:

【中文标题】Xamarin Watch - 使用 Web 服务 (Android)【英文标题】:Xamarin Watch - Consume web service (Android) 【发布时间】:2020-03-17 20:27:36 【问题描述】:

我正在尝试从我的 android 手表调用网站,但线程退出(线程 0x5 已退出,代码 0 (0x0))没有结果。 我添加了权限“Internet”和“Network_state”,这不会改变结果。在我的代码下方(在 Tizen 和纯 Xamarin 中完成):

protected override void OnCreate(Bundle bundle)
    
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.activity_main);

        textView = FindViewById<TextView>(Resource.Id.text);
        Button mybtn = FindViewById<Button>(Resource.Id.btnCal);
        SetAmbientEnabled();

        try
        
            mybtn.Click += delegate
            
                Task<string> callTask = calculateRoute();
                callTask.Wait();
                string astr = callTask.Result;
            ;
        
        catch (Exception ex)
        
            string tt = ex.ToString();
        
    

    private async Task<string> calculateRoute()
    
        HttpClient client;
        try
        
            String RestUrl = "https://www.google.com";
            var uri = new Uri(string.Format(RestUrl, string.Empty));

            client = new System.Net.Http.HttpClient();

            var response = await client.GetAsync(uri);
            var content = await response.Content.ReadAsStringAsync();

            return content;
        
        catch (Exception ex)
        
            string tt = ex.ToString();
            return "";
        
    

你有什么想法吗?

谢谢,杰彭

【问题讨论】:

我没有使用 Tizen 可穿戴设备,但是async 替换您的任务等待/结果以防止死锁。 【参考方案1】:

经过大量研究,我找到了解决方案,感谢:https://github.com/Samsung/Tizen-CSharp-Samples/tree/master/Wearable

为应用授予以下权限:

<privilege>http://tizen.org/privilege/internet</privilege>
<privilege>http://tizen.org/privilege/network.get</privilege>
<privilege>http://tizen.org/privilege/download</privilege>

C#代码

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.google.lu");

               //get the data
                request.Method = "GET";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                string tt = ((HttpWebResponse)response).StatusDescription + "\n";
                // Get the stream containing content returned by the server.
                Stream dataStream = response.GetResponseStream();
                // Open the stream using a StreamReader for easy access.
                StreamReader reader = new StreamReader(dataStream);
                // Read the content.
                string responseFromServer = reader.ReadToEnd();

快乐的编码,杰彭

【讨论】:

如果您对 Tizen .NET + Xamarin Forms 感兴趣,您可以从samsung.github.io/Tizen.NET获得有用的信息

以上是关于Xamarin Watch - 使用 Web 服务 (Android)的主要内容,如果未能解决你的问题,请参考以下文章

使用PCL Xamarin Forms将图像上载到FTP服务器

来自 ios 中的 Visual Studio xamarin 的 Web 服务调用

Xamarin REST Web 服务不反序列化

Xamarin 试图从 web 服务中获取用户,立即崩溃

是否有任何受支持的方式可以从跨平台 Xamarin 代码调用 asmx Web 服务?

用于 Xamarin 表单的 Rest + WCF 集成