BestHttp插件

该文章已生成可运行项目,

Unity商店有一款评分很高的网络通信插件BestHttp。笔者做了一些简单测试。官方地址:https://assetstore.unity.com/packages/tools/network/best-http-2-155981

Demo工程及插件,会在文章末尾提供。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using BestHTTP;
using BestHTTP.Authentication;
using BestHTTP.Cookies;
using System;
using System.Text;
using System.IO;
using Org.BouncyCastle.Crypto.Tls;
using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
using BestHTTP.Statistics;
using BestHTTP.WebSocket;
using BestHTTP.WebSocket.Frames;
using BestHTTP.SocketIO;
using BestHTTP.SignalR;
/*
* Author:W
* Http协议处理
*/

/// <summary>
/// 实现服务器证书验证接口
/// </summary>
public class CustomVerifier : ICertificateVerifyer
{
	public bool IsValid(Uri serverUri, X509CertificateStructure[] certs)
	{
		
        // TODO: Return false, if validation fails
		return true;
	}
}

public delegate void OnServerCallBack(Socket socket, Packet originalPacket, params object[] args);

public class HttpTest : MonoBehaviour {

	private HTTPRequest request1;

	/// <summary>
	/// 大文件流式请求,下载的文件存放到某一个文件目录下
	/// </summary>
	private HTTPRequest streamReq;

	/// <summary>
	/// 大文件上传请求
	/// </summary>
	private HTTPRequest upStreamReq;


	/// <summary>
	/// 支持服务器主动向客户端推送消息
	/// </summary>
	private WebSocket webSocket;

	/// <summary>
	/// SocketIO管理对象
	/// </summary>
	private SocketManager socketManager;


	/// <summary>
	/// singalR通信对象
	/// </summary>
	private Connection singalRConnect;


	#region 一般Http请求,TCP连接
	/// <summary>
	/// Get请求:向特定的资源发出请求。
	/// </summary>
	/// <param name="url"></param>
	public HTTPRequest GetRequest(string url)
	{
		HTTPRequest request = new HTTPRequest(new Uri(url), OnRequestFinished);
		request.Send();

		return request;
	}


	/// <summary>
	/// Post请求:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
	/// 数据被包含在请求体中。POST请求可能会导致新的资源的创建或已有资源的修改。
	/// </summary>
	/// <param name="url"></param>
	public HTTPRequest PostRequest(string url,Dictionary<string,string> paramDict = null)
	{
		HTTPRequest request = new HTTPRequest(new Uri(url),HTTPMethods.Post, OnRequestFinished);

		if (paramDict != null && paramDict.Count != 0)
		{
			foreach (KeyValuePair<string,string> v in paramDict)
			{
				request.AddField(v.Key, v.Value);
			}
		}
		
		request.Send();

		return request;
	}

	/// <summary>
	///  Head请求:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。
	///  这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。
	/// </summary>
	/// <param name="url"></param>
	public HTTPRequest HeadPost(string url)
	{
		HTTPRequest request = new HTTPRequest(new Uri(url),HTTPMethods.Head,OnRequestFinished);
		request.Send();

		return request;
	}

	/// <summary>
	/// Put请求:向指定资源位置上传其最新内容。
	/// </summary>
	/// <param name="url"></param>
	public HTTPRequest PutRequest(string url)
	{
		HTTPRequest request = new HTTPRequest(new Uri(url),HTTPMethods.Put,OnRequestFinished);
		request.Send();

		return request;
	}

	/// <summary>
	/// Delete请求:请求服务器删除 Request-URI 所标识的资源。
	/// </summary>
	/// <param name="url"></param>
	public HTTPRequest DeleteRequest(string url)
	{
		HTTPRequest request = new HTTPRequest(new Uri(url),HTTPMethods.Delete,OnRequestFinished);
		request.Send();

		return request;
	}

	/// <summary>
	/// Patch请求:是对 PUT 方法的补充,用来对已知资源进行局部更新 。
	/// </summary>
	/// <param name="url"></param>
	public HTTPRequest PatchRequest(string url)
	{
		HTTPRequest request = new HTTPRequest(new Uri(url),HTTPMethods.Patch,OnRequestFinished);
		request.Send();

		return request;
	}


	private void OnRequestFinished(HTTPRequest request, HTTPResponse response)
	{
		Debug.Log("Get 请求结果==" + response.DataAsText);

		if (response.StatusCode != 401)
		{
			Debug.Log("校验通过的");
		}
		else
		{
			Debug.Log("校验没通过的");
		}
	}

    #endregion


    #region 大文件Http请求
    private HTTPRequest StreamRequest(string url)
	{
		HTTPRequest request = new HTTPRequest(new Uri(url), OnStreamRequestFinished);

		//开启流式文件请求
		request.UseStreaming = true;
		request.StreamFragmentSize = 1 * 1024 * 1024;//1M
		//关闭缓存,因为已经将请求回来的数据保存到文件中
		request.DisableCache = true;

		request.Send();

		r
本文章已经生成可运行项目
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data菌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值