在使用 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 服务。
|