JAVA:HTTP POST请求-异常

时间:2019-07-16 07:26:36

标签: java web-services http post

请考虑以下端点

https://testapi/test/ap

我正在尝试使用以下标头参数发布请求

Content-Type : "application/json"
key: "<<TESTKEY>>"

并尝试在身体部位以下

   {
      "Type": "Y",
      "no": "3185195"
    }

我尝试了这段代码

URL url = new URL("https://testapi/test/ap");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type","application/json");
con.setRequestProperty("key", "testkey");
String postJsonData = "{\r\n" + 
        "  \"Type\": \"Y\",\r\n" + 
        "  \"no\": \"3185195\"\r\n" +       
        "}";
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(postJsonData);
wr.flush();
wr.close();

当我尝试运行此代码时,我在(con.getOutputStream())上遇到异常

java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:673)
at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:162)

当我调试此代码时,即使我使用setRequestMethod(“ POST”)将其设置为POST,我也会在HttpURLConnection对象中将方法获取为“ GET”。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

API中是否存在公开URL的安全管理器? 如果是这样:对象连接正在等待中:

  • 将“ Socket” SocketPermission连接到目标URL的主机/端口或
  • 允许此请求的URLPermission。

src:https://docs.oracle.com/javase/8/docs/api/java/net/HttpURLConnection.html

私下