本章介绍Post请求传入Xml用法
直接上代码:
using System;
using LitJson;
using System.Text;
using UnityEngine;
using System.Collections;
using UnityEngine.Networking;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
public class Test : MonoBehaviour
{
/// <summary>
/// 登录验证信息
/// </summary>
public class LoginInfo
{
public string userName;
public string password;
public LoginInfo(string userName, string password)
{
this.userName = userName;
this.password = password;
}
}
private void Start()
{
LoginInfo loginInfo = new LoginInfo("admin", "123456");
string xmlStr = ToXml<LoginInfo>(loginInfo);
StartCoroutine(UnityWebRequestPost("http://192.168.0.1:8080/port/login", xmlStr, text =>
{
Debug.Log("请求结果:" + text);
}));
}
/// <summary>
/// Xml序列化
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="arg">对象</param>
/// <returns></returns>
private string ToXml<T>(object arg)
{
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(T));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, arg);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
string xmlStr = Encoding.UTF8.GetString(memoryStream.ToArray());
return xmlStr;
}
/// <summary>
/// UnityWebRequest Post Xml
/// </summary>
/// <param name="url">接口地址</param>
/// <param name="xmlStr">xml参数</param>
/// <param name="textCallBack">text回调</param>
/// <returns></returns>
IEnumerator UnityWebRequestPost(string url, string xmlStr, Action<string> textCallBack)
{
byte[] bytes = Encoding.UTF8.GetBytes(xmlStr);
UnityWebRequest request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST)
{
uploadHandler = new UploadHandlerRaw(bytes),
downloadHandler = new DownloadHandlerBuffer()
};
request.SetRequestHeader("Content-Type", "application/xml;charset=utf-8");
yield return request.SendWebRequest();
if (request.isHttpError || request.isNetworkError)
{
Debug.LogError(request.error);
}
else
{
string result = request.downloadHandler.text;
Debug.Log(result);
}
}
}
这里需要注意的是,和Json传入数据的区别就是MIME类型的区别以及序列化API的区别
具体怎么序列化和反序列化Xml,直接传送门:Xml数据解析