• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c# - Xamarin 可移植类库中的简单获取请求(我需要它在 iOS 和 Windows Phone 上运行)

[复制链接]
菜鸟教程小白 发表于 2022-12-13 11:19:03 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我是 Xamarin 的新手,我正在尝试从 Internet 获取一个简单的文本文件。我将获取文本文件并将其解析为 xml。我可以使用一些示例来解析 xml,所以我想如果我可以使用 http get 请求通过 Internet 获取文件内容就可以了。

我已经尝试了几个示例,并且经常有部分工作,但由于缺少方法定义或缺少程序集引用而无法工作。如果我能克服错误,这个例子有很大的希望(见行注释):

我的进口

using System;

using Xamarin.Forms;
using System.Threading.Tasks;
using System.IO;
using System.Net;

我遇到问题的方法:

public static async Task<string> MakeGetRequest(string url, string cookie)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create (url);
        request.ContentType = "text/html";
        request.Method = "GET";
        request.Headers ["Cookie"] = cookie;

        var response = await request.GetResponseAsync ();//Type 'System.Net.HttpWebRequest' does not contain a definition for 'GetResponseAsync'
        var respStream = response.GetResponseStream();
        respStream.Flush ();

        using (StreamReader sr = new StreamReader (respStream)) {
            //Need to return this response 
            string strContent = sr.ReadToEnd ();
            respStream = null;
            return strContent;
        }
    }



Best Answer-推荐答案


我在 Microsoft Page 上偶然发现了这个问题的答案。

using System;

using Xamarin.Forms;
using System.Threading.Tasks;
using System.Net.Http;
using System.Diagnostics;

namespace pcl
{
    public class mainPage : ContentPage
    {
        public mainPage ()
        {

        var url = "http://ohiovr.com/church_files/dayspringWesleyan/mainscreen.xml";
        var myXMLstring = "";
        Task task = new Task (() =>{
            myXMLstring = AccessTheWebAsync (url).Result;
        });
        task.Start();
        task.Wait(); 
        Debug.WriteLine (myXMLstring);

        Content = new StackLayout { 
                Children = {
                    new Label { Text = "Hello StackOverflow" }
                }
            };
        }


        async Task<String> AccessTheWebAsync(String url)
        { 
            // You need to add a reference to System.Net.Http to declare client.
            HttpClient client = new HttpClient();

            // GetStringAsync returns a Task<string>. That means that when you await the 
            // task you'll get a string (urlContents).
            Task<string> getStringTask = client.GetStringAsync(url);

            // You can do work here that doesn't rely on the string from GetStringAsync.
            //DoIndependentWork();

            // The await operator suspends AccessTheWebAsync. 
            //  - AccessTheWebAsync can't continue until getStringTask is complete. 
            //  - Meanwhile, control returns to the caller of AccessTheWebAsync. 
            //  - Control resumes here when getStringTask is complete.  
            //  - The await operator then retrieves the string result from getStringTask. 
            string urlContents = await getStringTask;

            // The return statement specifies an integer result. 
            // Any methods that are awaiting AccessTheWebAsync retrieve the length value. 
            return urlContents;
        }


    }
}

关于c# - Xamarin 可移植类库中的简单获取请求(我需要它在 iOS 和 Windows Phone 上运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31493508/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap