using System;
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class WebRequest : MonoBehaviour
{
public IEnumerator GetRequest<T>(string url, Action<T> callBack)
{
using(UnityWebRequest unityWebRequest = UnityWebRequest.Get(url))
{
yield return unityWebRequest.SendWebRequest();
if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
{
Debug.LogError("加载出错");
}
else
{
string content = unityWebRequest.downloadHandler.text;
T data = JsonUtility.FromJson<T>(content);
callBack(data);
}
}
}
public IEnumerator GetTexture<Texture>(string url, Action<Texture> callBack)
{
using(UnityWebRequest unityWebRequest = UnityWebRequest.Get(url))
{
DownloadHandlerTexture texDl = new DownloadHandlerTexture(true);
unityWebRequest.downloadHandler = texDl;
yield return unityWebRequest.SendWebRequest();
if(!unityWebRequest.isNetworkError)
{
callBack(texDl.texture);
}
}
}
}
using UnityEngine;
using UnityEngine.UI;
public class WebRequestImg : MonoBehaviour
{
public Image image;
AndroidJavaClass _JC = null;
void Start()
{
_JC = new AndroidJavaClass("com.example.test.Test");
}
void RequestImage()
{
string url = "";
StartCoroutine(WebRequest.GetTexture(url, DownLoadImg));
StartCoroutine(WebRequest.GetTexture(url, SaveImg));
}
void DownLoadImg(Texture texture)
{
image.mainTexture = texture;
}
void SaveImg(Texture texture)
{
Texture2D texture2D = new Texture2D(texture.width, texture.height, TextureFormat.ARGB32, true);
texture2D = texture as Texture2D;
texture2D.Apply();
byte[] bytes = texture2D.EncodeToPNG();
string url = Application.persistentDataPath + "/share.png";
System.IO.File.WriteAllBytes(url, bytes);
}
void ShareImg()
{
string url = Application.persistentDataPath + "/share.png";
_JC.Call("ShareImg", "", url);
}
}