Java 为什么API的响应代码为400?
我试图制作一个应用程序,将文本和说话人ID发送到API,将文本转换为语音并发送回 我的问题是API的响应代码为400。URL是正确的。请求方法是正确的 (您可以查看API并找到更多信息) 我还将在下面列出我的代码:Java 为什么API的响应代码为400?,java,httpurlconnection,Java,Httpurlconnection,我试图制作一个应用程序,将文本和说话人ID发送到API,将文本转换为语音并发送回 我的问题是API的响应代码为400。URL是正确的。请求方法是正确的 (您可以查看API并找到更多信息) 我还将在下面列出我的代码: import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.nio.channels.Channels; import java.nio.channels.FileChan
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.FileChannel;
import java.nio.channels.ReadableByteChannel;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
import org.json.simple.JSONObject;
import java.io.IOException;
class Variables {
String tekst;
int speakerID = 7;
}
public class Neurokone {
public void ConnectToAPIAndSendRequest() throws IOException {
Variables v = new Variables();
//Establishes a connection w/ the API.
URL url = new URL("https://neurokone.cloud.ut.ee/api/v1.0/synthesize");
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestMethod("POST");
con.setRequestProperty("Content-type", "application/json; utf-8");
con.setRequestProperty("Accept", "audio/wav");
//This is self explanatory.
JSONObject jb = new JSONObject();
jb.put("text:", v.tekst);
jb.put("speaker_id:", v.speakerID);
//Sends the request.
try(OutputStream os = con.getOutputStream()) {
byte[] input = jb.toString().getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}
try {
//Generate a name for the response file based on user input
String fileName = v.speakerID + "--" + v.tekst.substring(0,10);
//Download response file
ReadableByteChannel rbc = Channels.newChannel(con.getInputStream());
FileOutputStream fos = new FileOutputStream(fileName);
FileChannel fc = fos.getChannel();
fc.transferFrom(rbc, 0, Long.MAX_VALUE);
} catch (NullPointerException e) {
System.out.println("Sinu koodis on viga: " + e);
}
}
public static void main(String[] args) throws IOException {
Variables variables = new Variables();
Scanner skanner = new Scanner(System.in);
//Here i am asking user to choose speaker voice and insert text to be sent to the API.
System.out.print("Sisesta häälekood (7 - 10): ");
variables.speakerID = skanner.nextInt();
System.out.print("Sisesta sünteesitav tekst: ");
variables.tekst = skanner.nextLine();
variables.tekst = skanner.nextLine();
skanner.close();
new Neurokone().ConnectToAPIAndSendRequest();
}
}
我仍在学习,因此欢迎您提供任何其他建议您有两个问题:
jb.put("text:", v.tekst);
jb.put("speaker_id:", v.speakerID);
text:
->text
和扬声器id:
->扬声器id
不带:
第二个问题是文档
speaker\u id
->speakerId
,但如果保留为空,则默认为7
这是我的要求:
curl -X POST \
https://neurokone.cloud.ut.ee/api/v1.0/synthesize \
-d '{ "text": "Hello", "speakerId": "4"}'
你有两个问题:
jb.put("text:", v.tekst);
jb.put("speaker_id:", v.speakerID);
text:
->text
和扬声器id:
->扬声器id
不带:
第二个问题是文档
speaker\u id
->speakerId
,但如果保留为空,则默认为7
这是我的要求:
curl -X POST \
https://neurokone.cloud.ut.ee/api/v1.0/synthesize \
-d '{ "text": "Hello", "speakerId": "4"}'
欢迎来到SO。如果需要帮助,例如stacktrace,则应包括完整的错误详细信息。代码400通常表示您发送的请求格式不正确。错误中可能暗示了哪一部分格式不正确。哦,我的错<代码>线程“main”java.io.IOException中的异常:服务器返回了URL的HTTP响应代码:400:https://neurokone.cloud.ut.ee/api/v1.0/synthesize 位于java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1927),位于java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1523),位于java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224),位于Neurokone.main(Neurokone.java:70)的Neurokone.ConnectToAPIAndSendRequest(neurkone.java:48)欢迎使用SO。如果需要帮助,您应该包括完整的错误详细信息,例如stacktrace。代码400通常意味着您发送了一个格式错误的请求。错误中可能会暗示哪部分格式错误。哦,我的错。
线程“main”中出现异常java.io.IOException:服务器返回了URL:https://neurokone.cloud.ut.ee/api/v1.0/synthesize java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1927)java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1523)在Neurokone.main(Neurokone.java:70)的Neurokone.ConnectToAPIAndSendRequest(Neurokone.java:48)的java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:224)