Cześć,
Szukam pomocy siedzę od kilkunastu godzin i zastanawiam się w czym jest problem mianowicie wysyłam zapytanie do serwera i za każdym razem w Javie dostaje odpowiedz
"Błąd żądania. Kod statusu: 400
Odpowiedź serwera: {"status* content type header')"
private static final String API_URL = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); // Ustawienie layoutu z klasy R
linkEditText = findViewById(R.id.linkEditText);
downloadButton = findViewById(R.id.download_mp3);
responseTextView = findViewById(R.id.responseTextView);
downloadButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String inputUrl = linkEditText.getText().toString().trim();
if (!inputUrl.isEmpty()) {
new DownloadTask().execute(inputUrl);
}
}
});
}
private class DownloadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String inputUrl = urls[0];
OkHttpClient client = new OkHttpClient();
JSONObject requestData = new JSONObject();
try {
requestData.put("url", inputUrl);
requestData.put("vCodec", "h264");
requestData.put("vQuality", "720");
requestData.put("aFormat", "mp3");
requestData.put("isAudioOnly", true);
} catch (JSONException e) {
e.printStackTrace();
}
MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
RequestBody requestBody = RequestBody.create(mediaType, requestData.toString());
Request request = new Request.Builder()
.url(API_URL)
.post(requestBody)
.addHeader("Content-Type", "application/json")
.addHeader("Accept", "application/json")
.build();
try {
Response response = client.newCall(request).execute();
String responseData = response.body().string();
if (response.isSuccessful()) {
JSONObject jsonResponse = new JSONObject(responseData);
String downloadLink = jsonResponse.getString("downloadLink");
return "Odpowiedź od serwera: " + downloadLink;
} else {
return "Błąd żądania. Kod statusu: " + response.code() + "\nOdpowiedź serwera: " + responseData;
}
} catch (IOException | JSONException e) {
e.printStackTrace();
return "Błąd żądania: " + e.getMessage();
}
}
Natomiast gdy zrobię to samo przez pythona dostaje odpowiedz z api (kod 200 czyli success)
import requests
import json
api_url = ""
request_data = {
"url": "",
"vCodec": "h264",
"vQuality": "720",
"aFormat": "mp3",
"isAudioOnly": True
}
headers = {
"Accept": "application/json" # Dodaj ten nagłówek do żądania
}
response = requests.post(api_url, json=request_data, headers=headers)
if response.status_code == 200:
response_data = response.json()
print("Odpowiedź od API:")
print(json.dumps(response_data, indent=2))
else:
print("Błąd żądania. Kod statusu:", response.status_code)
if response.status_code == 400:
error_data = response.json()
print("Błąd żądania:")
print(json.dumps(error_data, indent=2))
Może ktoś mi wyjaśnić o co tutaj chodzi? jak rozwiązać ten problem w javie?