在使用 Kotlin 结合 OkHttp3 发送 POST 请求时,如果你想在请求中包含一个特定的头部(比如 X-OpenAI-API-Key),你可以在构建请求时添加这个头部。但是,如果你想要使用类似于 OpenAI 的 API 密钥("X-OpenAI-API-Key")但又想用它来调用一个类似于ollama的本地或远程模型服务,你需要确保正确地设置头部和请求体(如果需要的话)。 
 
1. 添加依赖 
首先,确保你的项目中已经添加了 OkHttp3 的依赖。在你的 build.gradle 文件中添加: 
- dependencies {
 
 -     implementation "com.squareup.okhttp3:okhttp:4.9.0"
 
 - }
 
  复制代码 2. 创建 OkHttpClient 实例 
创建一个 OkHttpClient 的实例,这将用于发送请求。 
 
- import okhttp3.OkHttpClient
 
 -  
 
 - val client = OkHttpClient()
 
  复制代码 3. 构建请求并添加头部 
构建一个 POST 请求,并添加必要的头部,例如 Content-Type 和你的 API 密钥头部(例如 Authorization 或 X-API-Key,这取决于服务器的要求)。对于 Ollama,通常你可能需要传递 JSON 数据作为请求体。 
 
- import okhttp3.*
 
 - import okhttp3.MediaType.Companion.toMediaType
 
 - import okhttp3.RequestBody.Companion.toRequestBody
 
 - import java.util.concurrent.TimeUnit
 
 -  
 
 - val mediaType = "application/json; charset=utf-8".toMediaType()
 
 - val json = """{"prompt": "你的提示内容"}"""
 
 - val requestBody = json.toRequestBody(mediaType)
 
 -  
 
 - val request = Request.Builder()
 
 -     .url("http://你的ollama服务地址/api/generate") // 确保这是正确的URL和路径
 
 -     .post(requestBody)
 
 -     .addHeader("Content-Type", "application/json")
 
 -     .addHeader("Authorization", "Bearer 你的API密钥") // 如果Ollama需要API密钥的话
 
 -     .build()
 
  复制代码 4. 发送请求并处理响应 
使用 OkHttpClient 发送请求并处理响应。  
 
 
 
 
- client.newCall(request).enqueue(object : Callback {
 
 -     override fun onFailure(call: Call, e: IOException) {
 
 -         e.printStackTrace()
 
 -     }
 
 -  
 
 -     override fun onResponse(call: Call, response: Response) {
 
 -         if (response.isSuccessful) {
 
 -             val body = response.body?.string()
 
 -             println("Response: $body")
 
 -         } else {
 
 -             println("Request failed with code ${response.code}")
 
 -         }
 
 -     }
 
 - })
 
  复制代码 
 
注意: 
确保替换 "http://你的ollama服务地址/api/generate" 为你的 Ollama 服务实际地址和路径。 
 
根据 Ollama 的 API 文档,你可能需要调整头部或请求体格式。查阅 Ollama 的文档来确认正确的头部和请求体格式。例如,Ollama 可能不需要 Authorization 头部而是使用其他方式(如直接在 URL 中传递模型名等)。 
 
如果 Ollama 不需要 API 密钥,只需确保不要添加 Authorization 头部或者使用正确的头部名称。例如,Ollama 可能使用的是 X-API-Key 或其他类似的头部。 
 
通过上述步骤,你应该能够使用 OkHttp3 在 Kotlin 中发送 POST 请求到 Ollama 服务。 
 
 |