Java 无法发布,HttpURLConnection默认为获取

Java 无法发布,HttpURLConnection默认为获取,java,rest,httpurlconnection,Java,Rest,Httpurlconnection,我试图发布到某个端点,但该URL不允许使用GET方法。使用HTTPURLConnection时,我将request方法设置为post,doOutput设置为true 然而,由于某种原因,当我在InputStream上放置断点时(由于缺少文件而失败),请求方法是GET,而doOutput是false(只有doInput是true)。这导致404,方法不允许未找到,表示方法[get]没有匹配的处理程序。为什么它会忽略我的设置,然后就好像我什么都没有输入一样 String result = null;

我试图发布到某个端点,但该URL不允许使用GET方法。使用HTTPURLConnection时,我将request方法设置为post,doOutput设置为true

然而,由于某种原因,当我在InputStream上放置断点时(由于缺少文件而失败),请求方法是GET,而doOutput是false(只有doInput是true)。这导致404,方法不允许未找到,表示方法[get]没有匹配的处理程序。为什么它会忽略我的设置,然后就好像我什么都没有输入一样

String result = null;
    try {
        HttpURLConnection connection = (HttpURLConnection)new URL(baseUrl  + getTokenPath).openConnection();

        connection.setRequestMethod("POST");
        connection.setRequestProperty("Accept-Charset", charset);
        connection.setRequestProperty("Accept-Language", "en-US,en;q=0.8");
        connection.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded");
        connection.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString((clientid + ":" + secret).getBytes()));
        connection.setDoOutput(true);


        DataOutputStream wr = new DataOutputStream (
                connection.getOutputStream ());

        wr.writeBytes ("grant_type=client_credentials");
        wr.flush ();
        wr.close ();

        InputStream is = connection.getInputStream();
        BufferedReader rd = new BufferedReader(new InputStreamReader(is));
        String line;
        StringBuffer response = new StringBuffer();
        while((line = rd.readLine()) != null) {
            response.append(line);
            response.append('\r');
        }
        result = response.toString();
        rd.close();

    } catch (Exception e) {
        e.printStackTrace();
    }

在从
InputStream
读取所有数据之前,不要关闭
DataOutputStream

wr.close ();
关闭流会导致您断开连接。Flush足以发送
POST
请求

wr.flush ();

是不是“方法不允许”它是“未找到”,这是一个输入错误还是你看到了错误的错误?我的意思是404,未找到,这是一个输入错误。当你收到404,它的意思就是。端点上不存在您请求的页面。因此,请仔细检查您发送邮件的地址。如果问题是该方法,您将收到另一个错误代码,而不是404。我已经知道,我之前说过,当我在获取输入流之前设置断点时,HttpURLConnection仍然是get,doOutput为false。它会忽略我插入的值,并继续使用默认值。您能在应该接收此帖子的端点中显示代码吗?