【发布时间】:2021-01-13 21:54:05
【问题描述】:
我在将我的工作 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;
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;
}
}
以上是工作代码。这个请求没有问题。现在我正在尝试转换为 Unity Web 请求。目前还没有成功。我已经尝试了下面的代码,它命中了 API,但它都是 NULL。我认为这段代码 sn-p 很接近,但我做错了什么,导致我的数据总是以 NULL 的形式出现。
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();
}
【问题讨论】:
-
本题与unityscript无关。