我正在尝试反序列化 XML,其中一些相同的名称标签具有不同的 xsi 类型:
<user-defined-data-row>
<field name="entity">
<field-value xsi:type="field-text-valueType">
<value>Test</value>
</field-value>
</field>
<field name="expiry_date">
<field-value xsi:type="field-date-valueType">
<value>2001-10-07</value>
</field-value>
</field>
</user-defined-data-row>
Run Code Online (Sandbox Code Playgroud)
这很容易通过将 xml 反序列化到这个模型中来实现:
[XmlRoot(ElementName = "field-value", Namespace = "http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0")]
[XmlType("field-text-valueType")]
public class Fieldvalue
{
[XmlElement(ElementName = "value", Namespace = "http://www.crsoftwareinc.com/xml/ns/titanium/common/v1_0")]
public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
唯一不同的是 XML 中的类型:
字段文本值类型
字段日期值类型
我怎样才能让 C# 类使用类似的东西来解释这两种类型
[XmlType("field-text-valueType")]
Run Code Online (Sandbox Code Playgroud)
编辑:反序列化而不是序列化
我正试图通过我的C#应用程序发布表单.
我的问题是给定的令牌无效,帖子失败.
当我查看浏览器并阅读GET响应时,它会提供正确的令牌.我正在尝试在我的应用程序中执行相同操作但由于某种原因,我得到的呈现令牌无效.
我想从服务器获得第一个实际获取以获取第一个表单数据.我做错了吗?
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(linkToArticle);
req.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8);
string rawHtml = readStream.ReadToEnd();
string token = getToken(rawHtml);
response.Close();
readStream.Close();
var loginData = new NameValueCollection();
loginData.Add("__RequestVerificationToken", token);
loginData.Add("cbTerms", "on");
Console.WriteLine("token: "+ token);
Console.WriteLine("id: "+ id);
client.UploadValues("/Form/?aid="+id, "POST", loginData);
Run Code Online (Sandbox Code Playgroud) 我有一个小的C#控制台应用程序作为网络服务器.它对同一网络中的设备的NAT响应很好,但是当我尝试从外部IP在浏览器中访问它时,我得到400.
路由器配置为端口转发,否则我得到404.
localhost:8888/test工作正常.也适用于任何设备的192.168.0.x:8888/test.
xxx.xxx.xxx.xxx:8888/test因HTTP错误400而失败.请求主机名无效.
有什么建议?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace httpsrv
{
class Program
{
static void Main(string[] args)
{
WebServer ws = new WebServer(SendResponse, "http://localhost:8888/test/");
ws.Run();
Console.WriteLine("Pi server started");
Console.ReadKey();
ws.Stop();
}
public static string SendResponse(HttpListenerRequest request)
{
return string.Format("<HTML><BODY>Hosted from rasp. pi!<br>{0}</BODY></HTML>", DateTime.Now);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Webserver类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace httpsrv
{
public class WebServer
{
private readonly …Run Code Online (Sandbox Code Playgroud)