我想将 JSON 文件从 Unity 应用程序发送到 Laravel 后端。我的帖子请求似乎有问题,但我不知道它是什么。
使用 Unity 发送请求
public void SendRequest()
{
// serializable struct
OfferData data = new OfferData(OfferSize.JUMBO, OfferType.AD, 50, 10);
StartCoroutine(RequestHandler.Post(API_URL + "shop/store", JsonUtility.ToJson(data), (response) =>
{
if (response == null)
{
return;
}
// success
Debug.Log(response);
}));
}
JSON:
{
"size":3,
"type":1,
"gold":50,
"gems":10
}
RequestHandler中的post函数:
public static IEnumerator Post(string uri, string data, Action<string> response)
{
UnityWebRequest webRequest = UnityWebRequest.Post(uri, data);
webRequest.SetRequestHeader("Content-Type", "application/json");
yield return webRequest.SendWebRequest();
if (webRequest.isNetworkError)
{
Error(webRequest.error);
response(null);
}
else
{
response(webRequest.downloadHandler.text);
}
}
如果我要发送UnityWeb请求with Laravel 将发送成功响应,但是,打印的数组(见下文)只是空的。 Laravel 无法对 JSON 进行编码。
在 Laravel 中接收请求
这是在我的控制器函数中访问 HTTP Post 请求的位置:
public function store(Request $request)
{
Log::debug($request->json()->all());
}
使用 Postman 时会产生预期结果:
array ('size' => 3, 'type' => 1, 'gold' => 50, 'gems' => 10)
使用 Unity 使用相同的 JSON 发送类似的请求:
array ()
当我使用$request->getContent()
我实际上可以看到我的数据。为什么数组是空的?
成功请求头
从 Postman 发送时的请求标头:
{
"content-type": "application/json",
"user-agent": "PostmanRuntime/7.21.0",
"accept": "*/*",
"cache-control": "no-cache",
"postman-token": "d8f323fc-f2c8-49b8-a023-2955122fa20e",
"host": "127.0.0.1:8000",
"accept-encoding": "gzip, deflate",
"content-length": "119",
"cookie": "XSRF-TOKEN=eyJpdiI6IkRyU1RqSkppcVdyUmpuVHI2Ym55XC9RPT0iLCJ2YWx1ZSI6ImQrc1QrOTcyWE1GSXM3SGQrVlBsTG1lZ0dXd1FCQlRPellTQm83Z0FkWFc0UktjUW9PNHRqS3B3Z2Rya1ZZS2IiLCJtYWMiOiIxMmNlZTFiODc2MTlmNmVhYjI3ZGI1MTQ1NTM2MGFjODQ4YjZhNzdlMmM4NWQwM2NiYzk1MjkzYzNiYjBmNTA5In0%3D; recludo_session=eyJpdiI6ImFLcUdCdU1WU2JzazNEaEFyaGoxbnc9PSIsInZhbHVlIjoiT1VtNzl4XC9HMW5reTdKUGNDdlBXMVdLK3hMNFR3Q2JxMzA1RVY3NWdVdmV5akJhbnBKeU9YdU5JSmdPdGYyNWUiLCJtYWMiOiI4MWJjOGVhMTcxNDI3M2VjNTU0MDc3NmNkZDU0NjZlMzhmYWI1MjRlZGNlZjhhNGEyNmNjMmY3YThiMzAyODNhIn0%3D",
"connection": "keep-alive"
}
请求头错误
从 Unity 发送时的请求标头:
{
"host": "127.0.0.1:8000",
"user-agent": "UnityPlayer/2019.2.8f1 (UnityWebRequest/1.0, libcurl/7.52.0-DEV)",
"accept": "*/*",
"accept-encoding": "deflate, gzip",
"cookie": "XSRF-TOKEN=eyJpdiI6IlJhZE52emU1Z3hYUnVOWmtMbEdZa0E9PSIsInZhbHVlIjoibkdabkhZVnM1ZUYwSklvMzYrSHVLQ0Q5Y2NvRlVTMEhJOHpqMGFCSEZLZVQwd2NnT3NrUmNrXC9cL2Z4XC92M0J0QSIsIm1hYyI6Ijg4ZDUwZDQ4MWQ3OWM3ZjNlOTcxOWE3NzMxYjI1MmQ3NGQ2YzgwMWQ2MDE2YTQ5NTI3NWQ3MTg2ODM4NjMxY2UifQ%3D%3D; recludo_session=eyJpdiI6InoyMktDN3ByR1hYR0tHWCtvdmhOckE9PSIsInZhbHVlIjoiamZJVnlDbVYwZkdBU1wvMXhMeG1sWU5LdDY0d0NnQ0VucE1OK05UNDhUOG1Ya2o5ZUJIcFdaSktuakcrQjJqN1QiLCJtYWMiOiI1YTc5YTE5NDNhNjY5NWRlYzlmMDlkOGIyMWRiYTAzYzMwZTkwNzAzYjBhNTA2OGViOTUyOTlkYzMzYWJlMjA3In0%3D",
"content-type": "application/json",
"x-unity-version": "2019.2.8f1",
"content-length": "215"
}
我缺少什么?如果您需要更多信息,请告诉我。