java - 将 CURL 转换为 JAVA 以使用数据进行 PUT 请求
问题描述
我正在尝试将以下 CURL 请求转换为 Java
curl -H "public-api-token: 29sds38sd38xc339332dssdsdk22" -X PUT -d "testParameter=param1" https://server.com/url
(我出于其他原因编辑了服务器名称和参数名称,但请放心,当从终端执行上述命令时,它们工作得很好)
我已经到达以下但现在我被卡住了,因为我找不到可能导致错误的原因:
import java.net.*;
import java.io.*;
public class HelloWorld {
public static void main(String[] args) {
System.out.print(getResponseFromHttpUrl());
}
public static String getResponseFromHttpUrl() throws IOException {
URL url = new URL("https://server.com/url");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("PUT");
urlConnection.addRequestProperty("Accept", "application/json");
urlConnection.addRequestProperty("Content-Type", "application/json");
urlConnection.addRequestProperty("public-api-token", "29sds38sd38xc339332dssdsdk22");
String strFileContents = "";
try {
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setChunkedStreamingMode(0);
OutputStream out = new BufferedOutputStream(urlConnection.getOutputStream());
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(out, "UTF-8"));
writer.write("testParameter=param1");
writer.flush();
writer.close();
out.close();
urlConnection.connect();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
byte[] contents = new byte[1024];
int bytesRead = 0;
while ((bytesRead = in .read(contents)) != -1) {
strFileContents += new String(contents, 0, bytesRead);
}
} catch( Exception e ) {
// if a more general exception was thrown, handle it here
System.out.println(e.getMessage());
} finally {
urlConnection.disconnect();
}
return strFileContents;
}
}
我怀疑我提供数据的方法可能是错误的,但不确定。有什么建议么?
PS:显示的错误是
HelloWorld.java:8:错误:未报告的异常 IOException;必须被捕获或声明被抛出 System.out.print(getResponseFromHttpUrl());
解决方案
该消息的含义正是它所说的。您必须要么catch
IOException,要么声明抛出它的方法。
第二种选择是更好的选择。改变这个:
public static void main(String[] args) {
对此:
public static void main(String[] args) throws IOException {
推荐阅读
- azure - 如何在 Azure CosmosDB 中自定义顶点的外观?
- python - 使用 QThread 动态创建 QImage 帧到 ffmpeg 标准输入
- java - 如何在 jenkins 初始化脚本中使用自定义 java 库进行安装?
- python - 我在 python 中运行 SpeechRecognition 并收到此错误时遇到问题 - 在 Linux 中
- azerothcore - 艾泽拉斯核心:如何将区域转变为庇护所
- python-3.x - pyqt5 matplotlib 光标悬停注解竖线
- python - 如何使用 hyperopt 在 python 中为 Kernel PCA 选择超参数?
- python - 如何在 firebase 或任何其他平台上 24/7 或一段时间运行 python 脚本
- java - 如何使用 subString() 在 Android 中的特定文件夹中找到文件的扩展名
- ubuntu - 无法连接到我自己的 Wifi Ubuntu 18.04 HP ZBook 15