中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

怎么在.net中使用webapi接收xml格式數(shù)據(jù)-創(chuàng)新互聯(lián)

本篇文章為大家展示了怎么在.net 中使用webapi接收xml格式數(shù)據(jù),內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)公司為企業(yè)級客戶提高一站式互聯(lián)網(wǎng)+設計服務,主要包括成都網(wǎng)站制作、成都網(wǎng)站設計、外貿營銷網(wǎng)站建設、重慶APP開發(fā)公司、微信小程序、宣傳片制作、LOGO設計等,幫助客戶快速提升營銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經驗豐富的經驗,可以確保每一個作品的質量和創(chuàng)作周期,同時每年都有很多新員工加入,為我們帶來大量新的創(chuàng)意。 

webapi 接收 xml 的三種方法


<?xml version="1.0" encoding="utf-8"?>
<returnForm>
 <type>2</type> 
 <count>1</count> 
 <list> 
 <pushSmsForm> 
  <eprId>0</eprId> 
  <mobile>13560739262</mobile> 
  <msgId>30217002</msgId> 
  <content> <![CDATA[回復內容]]> </content> 
  <userId>id</userId> 
  <extNum>擴展號</extNum> 
  <recvNum/> 
 </pushSmsForm> 
 <pushSmsForm> 
  <eprId>0</eprId> 
  <mobile>13560739261</mobile> 
  <msgId>30217001</msgId> 
  <content> <![CDATA[回復內容]]> </content> 
  <userId>id</userId> 
  <extNum>擴展號</extNum> 
  <recvNum/> 
 </pushSmsForm> 
 </list> 
</returnForm>

思路


這個xml的基本知識我就不一一介紹了,簡單說一下<![CDATA[ ]]>標志,里面的內容是沒有限制的(除了< 和 >)。繼續(xù)講思路,文檔中只說了是post方法,所以我想到了三種可能:

  1. 對方通過form表單提交了一個xml文件,我需要用文件流(filestream)讀取文件,并進行轉化為實體類

  2. 對方通過post了一個字符串過來,我接收字符串并轉化為實體類。

  3. 對方直接在請求里添加了xml字符串(text/xml)

先構建兩個xml反序列化的幫助類


  /// <summary> 
  /// 反序列化 
  /// </summary> 
  /// <param name="type">類型</param> 
  /// <param name="xml">XML字符串</param>
  /// <returns></returns> 
  public static object Deserialize(Type type, string xml)
  {
   using (StringReader sr = new StringReader(xml))
   {
    XmlSerializer xmldes = new XmlSerializer(type);
    return xmldes.Deserialize(sr);
   }
  }

  /// <summary> 
  /// 反序列化 
  /// </summary> 
  /// <param name="type"></param> 
  /// <param name="xml"></param> 
  /// <returns></returns> 

  public static object Deserialize(Type type, Stream stream)
  {
   XmlSerializer xmldes = new XmlSerializer(type);
   return xmldes.Deserialize(stream);
  }

利用visual studio自帶的功能xml生成類(編輯-->選擇性粘貼-->paste xml as classes)


 [System.SerializableAttribute()]
 [System.ComponentModel.DesignerCategoryAttribute("code")]
 [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
 public partial class returnFormPushSmsForm
 {
  private int eprIdField;
  private string mobileField;
  private string msgIdField;
  private string contentField;
  private string userIdField;
  private string extNumField;
  private string recvNumField;

  /// <remarks/>
  public int eprId
  {
   get
   {
    return this.eprIdField;
   }
   set
   {
    this.eprIdField = value;
   }
  }



  /// <remarks/>
  public string mobile
  {
   get
   {
    return this.mobileField;
   }
   set
   {
    this.mobileField = value;
   }
  }



  /// <remarks/>
  public string msgId
  {
   get
   {
    return this.msgIdField;
   }
   set
   {
    this.msgIdField = value;
   }
  }



  /// <remarks/>
  public string content
  {
   get
   {
    return this.contentField;
   }
   set
   {
    this.contentField = value;
   }
  }

  /// <remarks/>
  public string userId
  {
   get
   {
    return this.userIdField;
   }
   set
   {
    this.userIdField = value;
   }
  }

  /// <remarks/>
  public string extNum
  {
   get
   {
    return this.extNumField;
   }
   set
   {
    this.extNumField = value;
   }
  }

  /// <remarks/>
  public string recvNum
  {
   get
   {
    return this.recvNumField;
   }
   set
   {
    this.recvNumField = value;
   }
  }
 }

生成類之后注意一下數(shù)據(jù)類型需要根據(jù)需求做一些修改

接下來就開始寫第一個接口,最簡單的直接接收字符串


  [HttpPost, Route("get/context")]
  public int getContext(context_ context)
  {
   bool result = false;
   //短信數(shù)據(jù)
   returnForm context_data = 
XmlSerializeUtil.Deserialize(typeof(returnForm), context.context) as returnForm;
   if (context_data != null && context_data.count > 0)
   {
    result = UpdateDB(context_data);
   }
   return result ? 100 : 500;
  }

這里我定義了一個類context_,調用之前寫的方法反序列化實體類,再寫入數(shù)據(jù)庫

第二個接口時接收請求中的xml(text/xml)


  [HttpPost, Route("get/context")]
  public int getContext(context_ context)
  {
   bool result = false;
   //短信數(shù)據(jù)
   returnForm context_data = XmlSerializeUtil.Deserialize(typeof(returnForm), 
HttpContext.Current.Request.InputStream) as returnForm;
   if (context_data != null && context_data.count > 0)
   {
    result = UpdateDB(context_data);
   }
   return result ? 100 : 500;
  }

這里讀取了請求中的內容,HttpContext.Current.Request.InputStream

第三種是讀取文件


  [HttpPost, Route("get/context")]
  public int getContext(context_ context)
  {
   bool result = false;
   HttpFileCollection files = HttpContext.Current.Request.Files;
   foreach (string key in files.AllKeys)
   {
    HttpPostedFile file1 = files[key];
    file1.InputStream.ToString();
    returnForm context_data = 
XmlSerializeUtil.Deserialize(typeof(returnForm), file1.InputStream) as returnForm;
    if (context_data != null && context_data.count > 0)
    {
     result = UpdateDB(context_data);
    }
   }
   return result ? 100 : 500;
  }


上述內容就是怎么在.net 中使用webapi接收xml格式數(shù)據(jù),你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文標題:怎么在.net中使用webapi接收xml格式數(shù)據(jù)-創(chuàng)新互聯(lián)
當前地址:http://www.rwnh.cn/article36/djgosg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、ChatGPT網(wǎng)站改版、動態(tài)網(wǎng)站網(wǎng)站排名、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
白城市| 兰考县| 慈溪市| 渭南市| 张家口市| 万山特区| 潮州市| 新昌县| 玛曲县| 凌源市| 大英县| 高台县| 苍山县| 鄂托克旗| 汉阴县| 朝阳县| 达尔| 赣州市| 津市市| 伊金霍洛旗| 峨山| 乳源| 大同县| 普陀区| 米林县| 剑川县| 灌南县| 常熟市| 宕昌县| 尉氏县| 乌兰浩特市| 富锦市| 崇州市| 顺义区| 保定市| 开远市| 阿拉善右旗| 慈利县| 江城| 禄丰县| 丰宁|