Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java REST API客户端_Java_Api_Rest_Apiclient - Fatal编程技术网

Java REST API客户端

Java REST API客户端,java,api,rest,apiclient,Java,Api,Rest,Apiclient,我有一个java客户机,它可以访问我创建的API,但当我运行这个类时,它基本上是java客户机,然后抛出异常。 这是一个例外 Exception in thread "main" java.lang.RuntimeException: Failed : HTTP error code : 405 at TST.main(TST.java:29) 代码如下: import java.io.BufferedReader; import java.io.IOException; import

我有一个java客户机,它可以访问我创建的API,但当我运行这个类时,它基本上是java客户机,然后抛出异常。 这是一个例外

Exception in thread "main" java.lang.RuntimeException: Failed : HTTP error code : 405
    at TST.main(TST.java:29)
代码如下:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class TST {

    // http://localhost:8080/RESTfulExample/json/product/post
    public static void main(String[] args) {

      try {

        URL url = new URL("http://localhost:8080/JAXRS-FileUpload/rest/files/upload");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "text/plain");

        String input = "/home/hassan/Downloads/56963a249bff5_4__67_green-lantern_issue70.png";

        OutputStream os = conn.getOutputStream();
        os.write(input.getBytes());
        os.flush();

        if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
            throw new RuntimeException("Failed : HTTP error code : "
                + conn.getResponseCode());
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(
                (conn.getInputStream())));

        String output;
        System.out.println("Output from Server .... \n");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }

        conn.disconnect();

      } catch (MalformedURLException e) {

        e.printStackTrace();

      } catch (IOException e) {

        e.printStackTrace();

     }

    }

}
我在本地主机上测试它,我也试着写我的IP地址来代替本地主机,但它不起作用,它也引发了同样的异常

Exception in thread "main" java.lang.RuntimeException: Failed : HTTP error code : 405
    at TST.main(TST.java:29)
URL=新URL(“”)


提前感谢。

您试图访问的资源不在那里,或者不允许发布
POST
。您可以尝试使用
GET
查看它是否存在。如果不是,它应该返回一个
404


405
返回代码表示“不允许使用方法”,在某些情况下,当资源完全丢失时可以看到<代码>404表示“未找到”。

什么异常?我们可以看到stacktrace吗?我已经编辑了我的问题并添加了异常。你可以更改内容类型image/png并试一试吗?你应该看看API运行方的日志,并向我们展示该方的代码。谢谢我在API中使用了GET方法,现在我将其更改为POST,但知道它会引发另一个异常线程“main”java.lang.RuntimeException:失败:HTTP错误代码:200位于TST.main(TST.java:29),这实际上是一个成功代码<代码>200表示正常。在代码中,只检查“HTTP_CREATED”,即
201
。每个
2xx
代码实际上都是一个成功响应,因此不应该为它们抛出异常。这里有更多信息:是的,这解决了我的问题。我已经对实际引发异常的代码进行了注释,但是如果我想引发除2xx之外的异常,那么我应该怎么做。据我所知,没有实用的方法,最简单的方法是:
if(conn.getResponseCode()/100>2){throw the exception}