java - 在 java 中使用 REST 调用模拟 cURL 时出错

标签 java json rest curl

目前我可以在curl中运行以下命令,它会按预期返回json响应。请注意,输入 JSON 是通过请求中的名称“json”作为表单参数发送的。该 API 将仅接受 JSON 请求,并且仅支持 POST 方法调用。

请求

curl --data 'json={ "startdate": "2012-10-10", "enddate":"2012-10-11" }' http://xxxxx.xxxx.xxx/xxxx/xxxx/xxxx/xxxx

回应

{"startdate":"2012-10-10","status":"true","Api Name":"xxxx","output":{"ROW":"49","EU":"54","NA":"33"},"enddate":"2012-10-11"}

我正在使用 Java 中的 REST 调用来模拟上述 cURL 命令。

代码如下

String urlString = "http://xxxxx.xxxx.xxx/xxxx/xxxx/xxxx/xxxx";
URL myUrl = new URL(urlString);
URLConnection urlConn = myUrl.openConnection();

String myData = "json={ \"startdate\": \"2012-10-10\", \"enddate\":\"2012-10-11\" }" ;
urlConn.setRequestProperty("data", myData);

urlConn.connect();

BufferedReader in = new BufferedReader(newInputStreamReader(urlConn.getInputStream()));

String inputLine;

while ((inputLine = in.readLine()) != null) {
    System.out.println(inputLine);
}
in.close();

但是上面的代码返回以下错误。

堆栈跟踪如下所示。

Exception in thread "main" java.io.IOException: Server returned HTTP response code: 405 for URL: http://xxxxx.xxxx.xxx/xxxx/xxxx/xxxx/xxxx
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1615)
    at dashboard.access.data.RAccess.main(RAccess.java:39)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)

最佳答案

也许:

urlConn.setRequestMethod("POST");

openConnection() 之后会修复它吗?你说你的api只允许post请求。并且您会收到 405 不允许的方法。

如果没有,您可以尝试此链接,查看第一章 Java HttpURLConnection 示例 中的 sendPost() 方法: http://www.mkyong.com/java/how-to-send-http-request-getpost-in-java/

关于java - 在 java 中使用 REST 调用模拟 cURL 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28896896/

相关文章:

Java 编程,向表添加标签和总计

JavaScript ES6 加载文件机制

php - REST API - 为什么使用 PUT DELETE POST GET?

php - CURL 无法运行 URL 并返回 302

ruby - 在命令行上将参数传递给 Rspec 测试

java - 打造类似 Spotify 的外观

Javafx 箭头按钮

python - 如何将 Instagram API 响应转换为 Python 3 字典?

java - 如何让我的 java 程序从我输入的值中打印出最小和最大的数字

json - 通过 json 搜索 wordpress