gpt4 book ai didi

c# - 在 UWP (C#) 中下载 JSON

转载 作者:行者123 更新时间:2023-11-30 21:49:17 24 4
gpt4 key购买 nike

我是 UWP 平台开发的新手。

我正在为 Windows 10 移动版编写 UWP 应用。

我是这样下载的

public async Task<string> FetchAsync(string url)
{
string jsonString;

using (var httpClient = new System.Net.Http.HttpClient())
{
var stream = await httpClient.GetStreamAsync(url);
StreamReader reader = new StreamReader(stream);
jsonString = reader.ReadToEnd();
}

return jsonString;
}

像这样写入文件:

  string url = "http://papajohn.pp.ua/?mkapi=getProductsByCat&cat_id=82";
var json = await FetchAsync(url);
using (FileStream fs = new FileStream("cache1.txt", FileMode.Create))
{
json.Save(fs);
}

Debug.WriteLine(json);

完整代码:

  using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using System.Threading.Tasks;
using System.Xml;
using Windows.ApplicationModel.Calls;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

namespace Murakami
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public MainPage()
{




string url = "http://papajohn.pp.ua/?mkapi=getProductsByCat&cat_id=82";
var json = await FetchAsync(url);
using (FileStream fs = new FileStream("cache1.txt", FileMode.Create))
{
json.Save(fs);
}

Debug.WriteLine(json);


this.InitializeComponent();
XmlDocument doc = new XmlDocument();
XmlElement el = (XmlElement)doc.AppendChild(doc.CreateElement("Order"));
el.SetAttribute("CallConfirm", "1");
el.SetAttribute("PayMethod", "");
el.SetAttribute("QtyPerson", "");
el.SetAttribute("Type", "1");
el.SetAttribute("PayStateID", "0");
el.SetAttribute("Remark", "{StreetName} , ..");
el.SetAttribute("RemarkMoney", "0");
el.SetAttribute("TimePlan", "");
el.SetAttribute("Brand", "1");
el.SetAttribute("DiscountPercent", "0");
el.SetAttribute("BonusAmount", "0");
el.SetAttribute("Department", "");

XmlElement el2 = (XmlElement)el.AppendChild(doc.CreateElement("Customer"));

el2.SetAttribute("Login", "");
el2.SetAttribute("FIO", "{FIO}");

XmlElement el3 = (XmlElement)el.AppendChild(doc.CreateElement("Address"));

el3.SetAttribute("CityName", "");
el3.SetAttribute("StationName", "");
el3.SetAttribute("StreetName", "{StreetName}");
el3.SetAttribute("House", "{HouseName}");
el3.SetAttribute("Corpus", "");
el3.SetAttribute("Building", "");
el3.SetAttribute("Flat", "{FlatName}");
el3.SetAttribute("Porch", "");
el3.SetAttribute("Floor", "");
el3.SetAttribute("DoorCode", "");

XmlElement el4 = (XmlElement)el.AppendChild(doc.CreateElement("Phone"));

el4.SetAttribute("Code", "{Code}");
el4.SetAttribute("Number", "{Phone}");

XmlElement el5 = (XmlElement)el.AppendChild(doc.CreateElement("Products"));




using (FileStream fs = new FileStream("test.xml", FileMode.Create))
{
doc.Save(fs);
}

Debug.WriteLine(doc);







}

async private void TwitterButton_Click(object sender, RoutedEventArgs e)
{
await Launcher.LaunchUriAsync(new Uri("https://twitter.com/murakami_rest"));

}

async private void FacebookButton_Click(object sender, RoutedEventArgs e)
{
await Launcher.LaunchUriAsync(new Uri("https://www.facebook.com/MURAKAMI.rest"));
}

async private void button9_Click_1(object sender, RoutedEventArgs e)
{
await Launcher.LaunchUriAsync(new Uri("https://vk.com/murakami_restaurant_delivery"));
}

async private void InstagramButton_Click(object sender, RoutedEventArgs e)
{
await Launcher.LaunchUriAsync(new Uri("https://instagram.com/murakami_in_ua/"));

}

private void PhoneCallButton_Click(object sender, RoutedEventArgs e)
{
PhoneCallManager.ShowPhoneCallUI("+380442308888","");
}

private void ProMurakamiButton_Click(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(ProMurakami));

}

private void BludoDnyaButton_Click(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(BludoDnya));
}

private void CartButton_Click(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(Cart2));
}


/* private void textBlock_SelectionChanged(object sender, RoutedEventArgs e)
{
PhoneCallManager.ShowPhoneCallUI("0213132131", "my name");
}*/
}




public async Task<string> FetchAsync(string url)
{
string jsonString;

using (var httpClient = new System.Net.Http.HttpClient())
{
var stream = await httpClient.GetStreamAsync(url);
StreamReader reader = new StreamReader(stream);
jsonString = reader.ReadToEnd();
}

return jsonString;
}
}

我有这些错误:

 Error  CS0116  A namespace cannot directly contain members such as fields or methods



Error CS0103 The name 'FetchAsync' does not exist in the current context Murakami



Error CS4033 The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.

我的代码错误在哪里?

非常感谢您的帮助!

最佳答案

我看过你的代码。

首先

你在哪里:

/* private void textBlock_SelectionChanged(object sender, RoutedEventArgs e)
{
PhoneCallManager.ShowPhoneCallUI("0213132131", "my name");
}*/
} // <-- This brace is closing off the class too early.

最后一个大括号关闭类,因此 FetchAsync(url) 方法试图声明为它自己的类。

从这段代码之后删除有问题的 },然后将一个放在底部。像这样:

            /* private void textBlock_SelectionChanged(object sender, RoutedEventArgs e)
{
PhoneCallManager.ShowPhoneCallUI("0213132131", "my name");
}*/


public async Task<string> FetchAsync(string url)
{
string jsonString;

using (var httpClient = new System.Net.Http.HttpClient())
{
var stream = await httpClient.GetStreamAsync(url);
StreamReader reader = new StreamReader(stream);
jsonString = reader.ReadToEnd();
}

return jsonString;
}
}
} // <-- Add this one, right here

这导致了你的

Error CS0116 A namespace cannot directly contain members such as fields or methods

Error CS0103 The name 'FetchAsync' does not exist in the current context Murakami

其次

您的 await FetchAsync(url); 调用在类的构造函数中,不能标记为 async

你需要创建一个新方法,包装你的

var json = await FetchAsync(url);
using (FileStream fs = new FileStream("cache1.txt", FileMode.Create))
{
json.Save(fs);
}

Debug.WriteLine(json);

在它自己的 async 方法中,然后从您的构造函数中调用它。

像这样:

    private async void NewMethod(string url)
{
var json = await FetchAsync(url);
using (FileStream fs = new FileStream("cache1.txt", FileMode.Create))
{
// Do stuff in here to write to your file...
}

Debug.WriteLine(json);
}

访问https://msdn.microsoft.com/en-us/windows/uwp/files/quickstart-reading-and-writing-files了解有关在 UWP 中将文本写入文件的更多信息。

然后从你的 ctor 调用它...

public MainPage() {
string url = "http://papajohn.pp.ua/?mkapi=getProductsByCat&cat_id=82";
NewMethod(url); // Now call your newly-created method.

... // Do your other stuff as before.
}

这就是造成你的原因

Error CS4033 The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.

希望对您有所帮助!如果您还需要什么,请告诉我。

关于c# - 在 UWP (C#) 中下载 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37087387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com