Lev*_*vvy 5 c# xml rest encoding uwp
我正在制作uwp(通用Windows平台)应用程序,并希望将这个xml:http://radioa24.info/ramowka.php反序列化为对象,但我得到的是scpecial字符,如ł,ó一些奇怪的字母和特殊的字母,如: \n和\ r:"Ä..."=>"±""ć"=>"ć""Ä™"=>"ę"例如Poniedzia?ek
我没有得到PoniedziaÅ\u0082ek
我的代码:
var httpClient = new HttpClient();
var response = await httpClient.GetAsync(uri).AsTask();
response.EnsureSuccessStatusCode();
var result = await httpResponse.Content.ReadAsStringAsync();
Run Code Online (Sandbox Code Playgroud)
我试图做一些编码转换,但没有任何成功.如何解决它,因为后来我想得到我的对象?
var reader = new XmlSerializer(typeof(Sources.Schedule));
using (var tr = new MemoryStream(Encoding.UTF8.GetBytes(resultString)))
{
Schedule = (Sources.Schedule)reader.Deserialize(res);
}
Run Code Online (Sandbox Code Playgroud)
请您尝试下面的代码,读取数据作为字节解决您的问题.
using (HttpClient client = new HttpClient())
{
Uri url = new Uri("http://radioa24.info/ramowka.php");
HttpRequestMessage httpRequest = new HttpRequestMessage(HttpMethod.Get, url);
Task<HttpResponseMessage> responseAsync = client.SendRequestAsync(httpRequest).AsTask();
responseAsync.Wait();
responseAsync.Result.EnsureSuccessStatusCode();
Task<IBuffer> asyncBuffer = responseAsync.Result.Content.ReadAsBufferAsync().AsTask();
asyncBuffer.Wait();
byte[] resultByteArray = asyncBuffer.Result.ToArray();
string responseString = Encoding.UTF8.GetString(resultByteArray, 0, resultByteArray.Length);
responseAsync.Result.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
小智 1
这是我的例子,可以很好地处理波兰语单词。
从页面获取xml的方法:
public async Task<string> GetXMl(string uri)
{
string result = null;
using (HttpClient httpClient = new HttpClient())
{
var response = await httpClient.GetAsync(uri);
result = await response.Content.ReadAsStringAsync();
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
反序列化xml的方法:
public void DeserializeXml(string xml)
{
var serializer = new XmlSerializer(typeof(ramowka));
var buffer = Encoding.UTF8.GetBytes(xml);
using (var stream = new MemoryStream(buffer))
{
var ramowka = (ramowka)serializer.Deserialize(stream);
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用方法的示例,例如在按钮单击事件中:
private async void Button_Click(object sender, RoutedEventArgs e)
{
string xml = await GetXMl("http://radioa24.info/ramowka.php");
DeserializeXml(xml);
}
Run Code Online (Sandbox Code Playgroud)
另外,在这里您可以通过 Visual Studio xml 转换为 C# 类 http://pastebin.com/aJ4B1aCF