C# 将Http请求转换为Unity Web请求
我在将工作HTTP请求转换为Unity Web请求时遇到问题。更改的原因是我想使用WebGL,我需要使用Unity web请求,而不能使用HTTP web请求。我试图转换为Unity Web请求,但它不起作用。这是我的密码:C# 将Http请求转换为Unity Web请求,c#,.net,api,unity3d,C#,.net,Api,Unity3d,我在将工作HTTP请求转换为Unity Web请求时遇到问题。更改的原因是我想使用WebGL,我需要使用Unity web请求,而不能使用HTTP web请求。我试图转换为Unity Web请求,但它不起作用。这是我的密码: using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Net; u
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using UnityEngine;
using UnityEngine.UI;
using WBG_4;
public class send : MonoBehaviour
{
public Text txtResponse;
private string _Response;
public void Send()
{
string uri = WBG_Config._EndPoint + "api/WhiteBoXGaming/Post_TestAPI";
OAuth oAuth = new OAuth();
oAuth.Administrator = WBG_Config._OAuth_Admin;
oAuth.Password = WBG_Config._OAuth_Password;
StartCoroutine(Testwebrequest(uri, oAuth));
txtResponse.text = _Response;
}
IEnumerator Testwebrequest(string uri, object obj)
{
string json = JsonConvert.SerializeObject(obj);
var client = new HttpClient();
var webRequest = WebRequest.Create(uri);
webRequest.Method = "POST";
webRequest.ContentType = "application/json";
using (var streamWriter = new StreamWriter(webRequest.GetRequestStream()))
{
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)webRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
_Response = Convert.ToString(result);
}
yield return _Response;
}
}
以上是工作代码。这个请求没有问题。现在我正在尝试转换为UnityWebRequest。到目前为止还没有成功。我已经尝试了下面的代码,它命中了API,但它都是空的。我认为这段代码很接近,但我做了一些错误的事情,导致我的数据总是以空的形式出现
IEnumerator Testwebrequest(string uri, object obj)
{
string json = JsonConvert.SerializeObject(obj);
var client = new HttpClient();
var webRequest = WebRequest.Create(uri);
webRequest.Method = "POST";
webRequest.ContentType = "application/json";
using (var streamWriter = new StreamWriter(webRequest.GetRequestStream()))
{
streamWriter.Write(json);
}
var httpResponse = (HttpWebResponse)webRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
_Response = Convert.ToString(result);
}
yield return _Response;
}
更新:
我能够让调用正常工作,但现在我需要将数据返回到对象中。以下是我到目前为止的情况:
IEnumerator Post(string url, string bodyJsonString)
{
var request = new UnityWebRequest(url, "POST");
byte[] bodyRaw = Encoding.UTF8.GetBytes(bodyJsonString);
request.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json");
yield return request.Send();
Debug.Log("Status Code: " + request.responseCode);
var response = request.downloadHandler.text;
using (var streamReader = new StreamReader(response))
{
var result = streamReader.ReadToEnd();
_Response = Convert.ToString(result);
}
yield return _Response;
txtResponse.text = request.ToString();
}
经过反复试验,我终于明白了。我希望这有助于尝试执行Unity Web请求的其他人:
public void Send()
{
string uri = WBG_Config._EndPoint + "api/YOUR ROUTE HERE";
OAuth oAuth = new OAuth();
oAuth.Administrator = WBG_Config._OAuth_Admin;
oAuth.Password = WBG_Config._OAuth_Password;
string json = JsonConvert.SerializeObject(oAuth);
StartCoroutine(Post(uri, json));
}
IEnumerator Post(string url, string bodyJsonString)
{
var request = new UnityWebRequest(url, "POST");
byte[] bodyRaw = Encoding.UTF8.GetBytes(bodyJsonString);
request.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json");
yield return request.Send();
Debug.Log("Status Code: " + request.responseCode);
var response = request.downloadHandler.data;
string json = System.Text.Encoding.UTF8.GetString(response);
var _Response = JsonConvert.DeserializeObject<string>(json);
yield return _Response;
txtResponse.text = _Response;
}
public void Send()
{
字符串uri=WBG\u Config.\u EndPoint+“api/此处的路由”;
OAuth OAuth=新的OAuth();
oAuth.Administrator=WBG\u Config.\u oAuth\u Admin;
oAuth.Password=WBG\u Config.\u oAuth\u Password;
字符串json=JsonConvert.SerializeObject(oAuth);
start例程(Post(uri,json));
}
IEnumerator帖子(字符串url、字符串bodyJsonString)
{
var请求=新UnityWebRequest(url,“POST”);
byte[]bodyRaw=Encoding.UTF8.GetBytes(bodyJsonString);
request.uploadHandler=(uploadHandler)新的UploadHandlerRaw(bodyRaw);
request.downloadHandler=(downloadHandler)new DownloadHandlerBuffer();
SetRequestHeader(“内容类型”、“应用程序/json”);
生成返回请求。Send();
Debug.Log(“状态代码:+request.responseCode”);
var response=request.downloadHandler.data;
string json=System.Text.Encoding.UTF8.GetString(响应);
var\u Response=JsonConvert.DeserializeObject(json);
收益率-收益率响应;
txtResponse.text=\u响应;
}
}这个问题与我无关。