如何在Unity的C#脚本中通过Curl请求OpenAI图片生成API获取链接
Unity中调用OpenAI图片生成API获取图片链接的实现
你提供的OpenAI图片生成API的Curl命令如下:
curl https://api.openai.com/v1/images/generations \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer YOUR_API_KEY' \ -d '{ "prompt": "A cute baby sea otter", "n": 2, "size": "1024x1024" }'
以下是完整的Unity C#脚本实现,替换你现有代码中的FillAndSend协程即可:
using UnityEngine; using UnityEngine.Networking; using System.Collections; public class OpenAIImageGenerator : MonoBehaviour { // 替换为你的OpenAI API密钥 private const string API_KEY = "YOUR_API_KEY"; private const string API_URL = "https://api.openai.com/v1/images/generations"; void Start() { StartCoroutine(FillAndSend()); } public IEnumerator FillAndSend() { // 1. 构造请求体数据 var requestData = new { prompt = "A cute baby sea otter", n = 2, size = "1024x1024" }; string jsonBody = JsonUtility.ToJson(requestData); byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonBody); // 2. 创建POST请求 using (UnityWebRequest request = new UnityWebRequest(API_URL, "POST")) { // 设置请求头 request.SetRequestHeader("Content-Type", "application/json"); request.SetRequestHeader("Authorization", $"Bearer {API_KEY}"); // 设置请求体 request.uploadHandler = new UploadHandlerRaw(bodyRaw); request.downloadHandler = new DownloadHandlerBuffer(); // 3. 发送请求并等待响应 yield return request.SendWebRequest(); // 4. 处理响应结果 if (request.result != UnityWebRequest.Result.Success) { Debug.LogError($"请求失败: {request.error}"); } else { // 解析返回的JSON数据 ImageGenerationResponse response = JsonUtility.FromJson<ImageGenerationResponse>(request.downloadHandler.text); // 遍历并输出所有图片链接 foreach (var imageData in response.data) { Debug.Log($"图片链接: {imageData.url}"); // 这里可以添加后续处理逻辑,比如加载图片等 } } } } // 用于解析API响应的JSON数据类 [System.Serializable] private class ImageGenerationResponse { public ImageData[] data; } [System.Serializable] private class ImageData { public string url; } }
关键说明:
- API密钥替换:把
API_KEY常量中的YOUR_API_KEY替换为你自己的OpenAI密钥 - 请求体构造:用匿名类构造请求参数,再通过
JsonUtility序列化为JSON字符串 - 请求头设置:必须包含
Content-Type和Authorization两个头信息,后者格式为Bearer 你的密钥 - 响应解析:定义了和API返回结构对应的序列化类,通过
JsonUtility.FromJson解析响应内容 - 错误处理:判断请求结果,失败时输出错误信息,成功则提取图片链接
内容的提问来源于stack exchange,提问作者Matt Novoselov
相关产品推荐
相关产品推荐

