小编OHM*_*HMR的帖子

使用多种类型反序列化 XML

我正在尝试反序列化 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# xml xml-serialization xsi xmlserializer

6
推荐指数
1
解决办法
2892
查看次数

在C#中发布到表单 - 通过antiforgerytoken

我正试图通过我的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# antiforgerytoken

4
推荐指数
1
解决办法
5822
查看次数

使用C#中的简单Web服务器400错误请求(无效主机)

我有一个小的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)

c# webserver tcplistener nat

4
推荐指数
2
解决办法
4779
查看次数