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

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[ ]]>標志,里面的內容是沒有限制的(除了< 和 >)。繼續講思路,文檔中只說了是post方法,所以我想到了三種可能:
對方通過form表單提交了一個xml文件,我需要用文件流(filestream)讀取文件,并進行轉化為實體類
對方通過post了一個字符串過來,我接收字符串并轉化為實體類。
對方直接在請求里添加了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;
}
}
}生成類之后注意一下數據類型需要根據需求做一些修改
接下來就開始寫第一個接口,最簡單的直接接收字符串
[HttpPost, Route("get/context")]
public int getContext(context_ context)
{
bool result = false;
//短信數據
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_,調用之前寫的方法反序列化實體類,再寫入數據庫
第二個接口時接收請求中的xml(text/xml)
[HttpPost, Route("get/context")]
public int getContext(context_ context)
{
bool result = false;
//短信數據
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格式數據,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創新互聯行業資訊頻道。
本文標題:怎么在.net中使用webapi接收xml格式數據-創新互聯
當前地址:http://www.yijiale78.com/article36/djgosg.html
成都網站建設公司_創新互聯,為您提供品牌網站制作、ChatGPT、網站改版、動態網站、網站排名、域名注冊
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯