Step1:request body -> GetContext()でContextを取得する
Step2: response body -> SetContext()Contextをセットする
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using System;
namespace UnityPostTest
{
public class TestAPIManager : MonoBehaviour
{
[SerializeField, Header("入力欄")] TMP_InputField m_InputField = default;
[SerializeField, Header("レスポンス")] TextMeshProUGUI m_ResponseText = default;
public class Item
{
public string testResponse;
public Item(string testResponse)
{
this.Response = Response;
}
public override string ToString()
{
return string.Format("{0}", Response);
}
}
private string m_testContext;
private const string baseUrl = "XXXXXXXX";
private const string url = "/api/v1/test";
//Contextをセット
public void SetContext(string testContext)
{
m_testContext = testContext;
}
//Contextを取得
public string GetContext()
{
if (string.IsNullOrWhiteSpace(m_testContext))
{
m_testContext = "";
}
return m_testContext;
}
//コルーチンを呼び出す
public void OnClick(){
Debug.Log("Sending Post Request");
StartCoroutine(Post((result) => {
print("Result from Coroutine:" + result);
}));
}
public IEnumerator Post(Action<string> result)
{
string targetUrl = baseUrl + url;
//request body
WWWForm form = new WWWForm();
form.AddField("test", m_InputField.text.ToString());
form.AddField("testContext", GetContext());
using(UnityWebRequest request = UnityWebRequest.Post(targetUrl, form)){
request.SetRequestHeader("AUTHORIZATION", "XXXXXXX");
request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
// APIリクエストが返ってくるのを待つ
yield return request.SendWebRequest();
//エラーのチェック
if (request.result != UnityWebRequest.Result.Success) {
result(request.error);
}
else {
Debug.Log("Form upload complete!");
var item = JsonUtility.FromJson<Item>(request.downloadHandler.text);
m_ResponseText.text = item.Response.ToString();
//Contextをセットする
SetContext(item.Context.ToString());
result(request.downloadHandler.text);
}
}
}
}
}