- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试进行基本的网络客户端调用,以获取用于 WP7 的帖子跟踪应用程序的 xml 流。它确实有效,我确实得到了 xml,但问题是因为我住在瑞典,我们有特殊字符,如 å ö ä 等,对于这些字符,我只得到一个里面有问号的框。
我想要获取的 xml 文件如下所示:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<pactrack version="2.0" date="Sat Jan 14 18:29:26 CET 2012" size="2125" lang="SE">
<header>
<noofparcelentries>1</noofparcelentries>
...
所以编码是 ISO-8859-1,我想这是我的问题。一直试图在论坛上阅读解决方案,有人说支持该格式,而有些则不支持: Reading iso-8859-1 rss feed C# WP7
我一直在尝试向客户端添加不同的编码,但似乎无济于事,我的 xml 总是缺少特殊符号。然而,有一种奇怪的行为让我有点害怕,如果我添加了错误的跟踪号码,而不是数字放在特殊字符中,我可以突然读取一些特殊字符,我从服务器获得的 xml 是一条错误消息,其中包含跟踪号,见下文,但 xml 定义相同。
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<pactrack version="2.0" date="Sat Jan 14 18:34:43 CET 2012" size="389" lang="SE" >
<header>
<noofparcelentries>1</noofparcelentries>
<noofuniqueparcels>1</noofuniqueparcels>
</header>
<body>
<parcel id="8538öööåå54248SE"> //I can read this road of xml suddenly
<customerref></customerref>
<internalstatus>0</internalstatus>
有人有什么想法吗?我是初学者,完全被这个问题弄糊涂了,所以任何帮助将不胜感激!第一个 xml 和第二个 xml 有什么区别吗?在我看来,我可能看不到嵌套在节点中的特殊章程,这会是问题所在吗?
WebClient client = new WebClient();
public MainPage()
{
InitializeComponent();
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
}
void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
if (e.UserState as string == "mobiforge")
{
txtStatus.Text = e.BytesReceived.ToString() + "bytes received.";
}
}
public void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null && !e.Cancelled)
{
MessageBox.Show(e.Result);
}
}
private void btnDownload_Click(object sender, RoutedEventArgs e)
{
client.DownloadStringAsync(new Uri("http://server.logistik.posten.se/servlet/PacTrack?lang=SE&kolliid=85380954248SE"), "posten");
}
最佳答案
根据这个MSDN page , Silverlight 只支持这四种编码:
utf-8 UTF8Encoding
utf-16 UnicodeEncoding (little-endian)
utf-16BE UnicodeEncoding (big-endian)
utf-16LE UnicodeEncoding (little-endian)
根据您链接中的一个答案,用户已经设法通过对字符的上半部分进行轻微调整来使其正常工作。我认为这对您不起作用?
您可以下载原始字节 (OpenReadAsync
) 并在原始字节上执行您自己的编码,而不是 DownloadStringAsync
。 This program可能会帮助您开始这方面的工作。
编辑 - 注意到 MSDN 页面底部的注释,说明支持 ISO-8859-1
。当你尝试这个时会发生什么:
client.OpenReadAsync(new Uri("http://server.logistik.posten.se/servlet/PacTrack?lang=SE&kolliid=85380954248SE"), "posten");
然后,在您的回调中,使用编码器读取数据。
var enc = Encoding.GetEncoding("iso-8859-1");
using (var reader = new StreamReader(e.Result, enc))
{
var result = reader.ReadToEnd();
Debug.WriteLine(result);
}
关于c# - 读取ISO 8859 1编码,用webclient下载xml流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8864148/
我正在编写一个类库来在我无法控制的站点上执行操作。该网站正在接受表单帖子作为输入。 谁能告诉我这两种方法除了上传数据的形式之外是否有区别? System.Net.WebClient.Uploa
用于工作的代码。 有问题的网址是 https://yobit.net/api/3/info 它适用于 IE。它曾经与 webclient 一起使用。它现在在 webclient 中不起作用。我想知道问
因此,我将我的 WebClient 包装在一个 using 语句中。但是我突然想知道,如果我的对象实现了 IDisposable 并且包装在 using 语句中,我是否需要取消订阅事件? 下面是我当前
我正在 VS15 测试版中工作并尝试使用 WebClient。虽然 System.Net 被引用,并且智能感知建议 WebClient 类可用,但在构建时我收到以下错误: The type or na
我想知道是否可以将 cookie 从一个 Web 客户端复制到另一个 Web 客户端。 原因 我正在使用并行 Web 请求,它会在每个新线程上创建 Web 客户端的新实例。 问题 信息敏感,需要使用p
我正在尝试使用 WebClient,但它给我错误,所以我检查了几个论坛(包括这个),他们告诉我把它放在哪里 在文件的顶部: using System.Net 在我想使用 WebClient 的地方之后
我正在尝试使用 WebClient 实现以下场景。使用 RestTemplate 很简单,但我不能再这样做了。 伪java代码中Spring Controller 的相关部分: Mono t1 = w
我正在使用 Spring WebClient 调用休息服务。如下所述的 post 调用代码。 Mono response = client.post()
正在尝试使用 WebClient在 Blazor 项目中。 得到以下错误: 在 blazor.webassembly.js:1 WASM: System.Net.WebException: An ex
我正在使用 ASP.NET Core 并尝试将文件下载到绝对路径。 但我遇到的问题是文件总是被下载到项目目录,文件名本身得到整个路径的名称。 我的代码: string path = @"C:\User
我需要自动化涉及使用登录表单的网站的流程。我需要在登录页面之后的页面中捕获一些数据。 我知道如何对普通页面进行屏幕抓取,但不知道如何抓取安全站点背后的页面。 这可以通过 .NET WebClient
我正在尝试逐步下载一系列序列化数据。目标是从服务器发送一个大块,并在下载时在客户端对其进行部分处理。 我正在使用 System.Net.WebClient 类并将其 AllowReadStreamBu
我在 Windows 桌面应用程序上使用此代码来获取组合框的值,之后我需要选择哪个组合框将使用 JavaScript 使用新信息更新页面 private WebBrowser withEventsFi
我正在尝试通过 C# 代码获取网站的 HTML 源代码。当我使用 Windows 身份验证访问站点时,以下代码有效: using (WebClient client = new WebClient()
我只是使用WebClient.DownloadString(),但速度慢得惊人。最大速度为 40kbs 我尝试将 WebClient.Proxy 设置为 null,但这不起作用,而且我还没有达到最大互
为了利用新的 WebClient API,我在我的 Intellij 项目中包含了 spring-webflux。 dependencies { implementation 'org.spr
我已经开始使用 WebClient,并使用过滤器方法添加请求/响应日志记录: WebClient.builder() .baseUrl(properties.getEndpoint())
我正在使用 WebClient.DownloadFile 将图像下载到本地存储库,如下所示: WebClient myWC = new WebClient();
我尝试使用网络客户端非阻塞方法验证验证码响应。所以它的工作,但我需要我的方法返回 boolean 值而不是异常。我如何从订阅返回值? webClient
这个问题已经有答案了: What does a "Cannot find symbol" or "Cannot resolve symbol" error mean? (18 个回答) 已关闭 3 年
我是一名优秀的程序员,十分优秀!