Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将Http请求转换为Unity Web请求_C#_.net_Api_Unity3d - Fatal编程技术网

C# 将Http请求转换为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

我在将工作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;
    }
}
以上是工作代码。这个请求没有问题。现在我正在尝试转换为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响应;
}

}

这个问题与我无关。