【发布时间】:2019-10-05 07:45:01
【问题描述】:
所以,我正在使用 .NET 框架构建一个 RESTFUL API。但是,由于连接被拒绝,我已经停滞不前。它拒绝自签名证书。
所以我正在使用移动热点(这样我可以检查多个连接),我的手机正在尝试连接到 API。它被拒绝。我让 Unity 尝试从运行 API 服务器的同一设备连接,但它被拒绝。我在本地系统上使用邮递员,它被拒绝了。如果我在邮递员中关闭 SSL 证书......它的工作原理!但是,我不喜欢这样。或者我可能对如何正确设置感到困惑。
我正在使用 .NET 为您提供的开箱即用 API,但有一些改动:
// GET api/values
[HttpGet]
public ActionResult<Player> Get()
{
Player player = new Player
{
Id = 1,
Name = "Bloodmorphed"
};
return player;
}
现在在 Unity 中(因为它确实是我为获取数据而编写的唯一代码):
using System.Collections;
using System.Collections.Generic;
using System;
using UnityEngine;
using UnityEngine.Networking;
using System.Net;
public class CallAPI : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
StartCoroutine(GetUnityWebRequest());
}
IEnumerator GetUnityWebRequest()
{
UnityWebRequest request = UnityWebRequest.Get("https://localhost:44305/api/values");
yield return request.SendWebRequest();
if (request.isHttpError)
{
Debug.Log("HTTP Error: " + request.error);
}
else if (request.isNetworkError)
{
Debug.Log("Network Error: " + request.error);
}
else if (request.error != null)
{
Debug.Log("Other Error: " + request.error);
}
else
{
Debug.Log(request.downloadHandler.text);
}
}
}
现在,使用 Unity,它会给出网络错误,但会显示“未知错误”。我可以强制它不使用自签名证书,但我认为这会更好地固定服务器端而不是客户端。
所以:它可以在本地浏览器上运行,但不能在远程浏览器上运行,但在同一个网络上(我知道它可以连接,因为我之前已经这样做了......它拒绝连接)。如果我禁用 ssl 证书,它将在邮递员上工作。我有点不知所措。
【问题讨论】:
标签: c# unity3d asp.net-web-api