You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中用Async Http Client调用GPT图像生成API失败求助

解决Async Http Client调用OpenAI图像生成API失败问题

在Android Studio中使用Async Http Client调用OpenAI图像生成API生成图片时,每次调用均失败,相关代码如下:

fun getaiimage(prompt: String) {
    val client = AsyncHttpClient()
    val params = RequestParams()

    // apikey
    val apikey = "API_KEY"

    // Api parameters
    params["prompt"] = prompt
    params["size"] = "256x256"
    params.put("n", 1)
    params["response_format"] = "https://api.openai.com/v1/images/generations"
    params["model"] = "image-beta-003"
    params["Authorization"] = "Bearer $apikey"

    client["https://api.openai.com/v1/images/generations", params, object :
        JsonHttpResponseHandler() {
        override fun onFailure(
            statusCode: Int,
            headers: Headers?,
            response: String?,
            throwable: Throwable?
        ) {
            Log.d("Image Failed", "Big Errors")
        }

        override fun onSuccess(statusCode: Int, headers: Headers?, response: JSONObject) {
            Log.d("Image Received", "No Errors")
        }
    }]
}

错误分析及修正方案

以下是代码中的核心问题及对应修改:

  1. 请求方法错误
    OpenAI图像生成API要求使用POST请求,但原代码使用client[]是GET请求的调用方式,需改为client.post()。

  2. 参数配置错误

  • response_format参数值错误:该参数可选值为url或b64_json,原代码错误设置为API地址;
  • model参数错误:正确的图像生成模型为dall-e-2或dall-e-3,原代码中的image-beta-003是无效值;
  • Authorization不应放入RequestParams:身份认证信息需放在请求头中,而非请求参数。
  1. 请求头缺失
    需添加Content-Type: application/json请求头,同时将Authorization放入请求头。

修正后的代码

fun getaiimage(prompt: String) {
    val client = AsyncHttpClient()
    val apiKey = "API_KEY"
    
    // 构建请求体JSON
    val requestBody = JSONObject().apply {
        put("prompt", prompt)
        put("size", "256x256")
        put("n", 1)
        put("response_format", "url") // 可选值:url / b64_json
        put("model", "dall-e-2") // 可选值:dall-e-2 / dall-e-3
    }

    // 设置请求头
    client.addHeader("Authorization", "Bearer $apiKey")
    client.addHeader("Content-Type", "application/json")

    client.post("https://api.openai.com/v1/images/generations", requestBody, object : JsonHttpResponseHandler() {
        override fun onFailure(
            statusCode: Int,
            headers: Headers?,
            responseString: String?,
            throwable: Throwable?
        ) {
            // 增加错误日志,便于排查
            Log.e("Image Failed", "Status Code: $statusCode, Error: ${throwable?.message}, Response: $responseString")
        }

        override fun onSuccess(statusCode: Int, headers: Headers?, response: JSONObject) {
            Log.d("Image Received", "Response: $response")
            // 解析返回的图片URL
            val dataArray = response.getJSONArray("data")
            if (dataArray.length() > 0) {
                val imageUrl = dataArray.getJSONObject(0).getString("url")
                Log.d("Image URL", imageUrl)
            }
        }
    })
}

额外注意事项

  • 确保替换API_KEY为你的有效OpenAI API密钥;
  • 检查Android项目是否添加了网络权限(android.permission.INTERNET);
  • 若使用dall-e-3模型,需注意其支持的尺寸参数为1024x1024、1792x1024或1024x1792。

内容的提问来源于stack exchange,提问作者Shane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:13:14