Unity]UnityWebRequestのGet、Postの使用
4011 ワード
UnityWebRequestを使って外部からファイルをダウンロードしてみました
まずGoogleドライブにダウンロードリンクを作成しました
コードを書きました
FilePathは権限を拒否しました.どうやって許可すればいいか分かりません.
しかし後で権限設定を触る必要がないことを知り、
パスは変更する必要がありますが、ディレクトリではなくファイル名を含める必要があります.
これにより、保存するフォルダに同名のファイルを配置できます.
次のコードをテストして、正常にダウンロードしました
最後に、フォルダに同じ名前のファイルを配置する手順をスキップします.
File.先にCreate()で同じ名前の空のファイルを作成しました unityはJsonUtilityをサポートし、ゲームオブジェクトはJsonfileによって を生成して伝送することもできる.アップグレード可能なサーバがなく、 をテストしたことがありません.
リファレンス https://timeboxstory.tistory.com/81 https://stackoverflow.com/questions/46182381/c-sharp-file-writeallbytes-doesnt-work-filepath-doesnt-work https://doggie-development.tistory.com/3 https://docs.unity3d.com/kr/2017.4/Manual/UnityWebRequest-SendingForm.html https://timeboxstory.tistory.com/83
UnityWebRequest.Get(URL)
まずGoogleドライブにダウンロードリンクを作成しました
コードを書きました
FilePathは権限を拒否しました.どうやって許可すればいいか分かりません.
しかし後で権限設定を触る必要がないことを知り、
パスは変更する必要がありますが、ディレクトリではなくファイル名を含める必要があります.
string FilePath = "Assets/Resources" // (Error)
string FilePath = "Assets/Resources/hp.png"; // (Ok!)
File.WriteAllBytes()自体が元のファイルを上書きするように…!これにより、保存するフォルダに同名のファイルを配置できます.
次のコードをテストして、正常にダウンロードしました
最後に、フォルダに同じ名前のファイルを配置する手順をスキップします.
File.先にCreate()で同じ名前の空のファイルを作成しました
using System.IO;
using UnityEngine.Networking;
public class WebRequestTest : MonoBehaviour
{
string FilePath = "Assets/Resources/hp.png";
string createFilePath = "Assets/Resources/hp.png";
void Start()
{
File.Create(createFilePath);
StartCoroutine(DownLoadGet("{다운로드 링크}"));
public IEnumerator DownLoadGet(string URL)
{
UnityWebRequest request = UnityWebRequest.Get(URL);
yield return request.SendWebRequest();
// 에러 발생 시
if(request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
{
Debug.Log(request.error);
}
else
{
File.WriteAllBytes(FilePath, request.downloadHandler.data); // 파일 다운로드
}
}
}
UnityWebRequest.Post(URL)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class WebRequestPostTest : MonoBehaviour
{
public GameObject postObj;
// Start is called before the first frame update
void Start()
{
string jsonfile = JsonUtility.ToJson(postObj);
StartCoroutine(Upload("http://URL", jsonfile));
}
IEnumerator Upload(string URL, string jsonfile)
{
using (UnityWebRequest request = UnityWebRequest.Post(URL, jsonfile))
{
byte[] jsonToSend = new System.Text.UTF8Encoding().GetBytes(jsonfile);
request.uploadHandler = new UploadHandlerRaw(jsonToSend);
request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
request.SetRequestHeader("Content-Type", "application/json");
yield return request.SendWebRequest();
if(request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
{
Debug.Log(request.error);
}
else
{
Debug.Log(request.downloadHandler.text);
}
}
}
}
次はサーバーを掘り出してJsonを掘り出しますリファレンス
Reference
この問題について(Unity]UnityWebRequestのGet、Postの使用), 我々は、より多くの情報をここで見つけました https://velog.io/@minjujuu/Unity-UnityWebRequest-사용해서-파일-다운받기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol