Merhaba, C# Windows Forms uygulamamda Google Gemini APIsine aşağıdaki gibi istek gönderiyorum. API anahtarım doğru ve yetkilendirme hatası almıyorum. Ancak her seferinde 400 Bad Request (HTTP 400) hatası alıyorum.
Hatanın sebebi ne olabilir? İstek JSON yapısı veya endpoint ile ilgili bir hatammı var
Yardımcı olursanız sevinirim.
Kullandığım kod örneği:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace FİLMÖNERİuygulaması
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void label5_Click(object sender, EventArgs e)
{
}
private async Task<string> GetGeminiResponseAsync(string prompt, string apiKey)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeader Value("application/json"));
var url = $"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={apiKey}";
var payload = new
{
prompt = new
{
text = prompt
},
temperature = 0.7,
maxOutputTokens = 1024
};
var json = JsonConvert.SerializeObject(payload);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine("Response: " + responseString);
response.EnsureSuccessStatusCode();
var jsonObj = JObject.Parse(responseString);
string text = jsonObj["candidates"]?[0]?["content"]?["parts"]?[0]?["text"]?.ToString();
return text ?? "Yanıt alınamadı.";
}
}
private async void onerBtn_Click(object sender, EventArgs e)
{
onerBtn.Enabled = false;
richSonucBox1.Text = "Film önerileri getiriliyor, lütfen bekleyin...";
try
{
string filmAdi = textBoxFilm.Text.Trim();
string sebep = textBoxSebep.Text.Trim();
string tur = comboFilmTuru.Text;
string minYil = comboMinTarih.Text;
string maxYil = comboMaxTarih.Text;
string dublaj = comboDublaj.Text.ToLower() == "evet" ? "olsun" : "olmasın";
string prompt = $@"Daha önce izlediğim ""{filmAdi}"" adlı filmi sevmemin sebebi: {sebep}.
Bana bu filme benzeyen, {tur} türünde, {minYil}-{maxYil} yılları arasında çekilmiş ve Türkçe dublaj {dublaj} olan 3 film öner.
Yanıtın yalnızca film adı, yılı ve kısa açıklama şeklinde olsun.";
string apiKey = "AIzaSyAM7C5j83SzETadt2tpf2s_zfgRwcaOpbcrn"; // API anahtarını buraya gir
string cevap = await GetGeminiResponseAsync(prompt, apiKey);
richSonucBox1.Text = cevap;
}
catch (Exception ex)
{
richSonucBox1.Text = "Bir hata oluştu: " + ex.Message;
}
finally
{
onerBtn.Enabled = true;
}
}
}
}
Teşekkür ederim