尝试发布到终结点时出现未知协议错误

mgdq6dx1  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(353)

我正在尝试使用post方法连接到终结点,但始终出现以下错误:

java.net.MalformedURLException: unknown protocol: localhost
at java.base/java.net.URL.<init>(URL.java:634)
at java.base/java.net.URL.<init>(URL.java:523)
at java.base/java.net.URL.<init>(URL.java:470)
at endpointtest.endpoint(endpointtest.java:23)
at main.main(endpoint.java:66)

我希望我的代码返回基于post请求的响应,但事实并非如此。下面是我的代码:

public class endpointtest {

    public String endpoint(String urlStr, String username) {

        final StringBuilder response = new StringBuilder();

        try {
            //creating the connection
            URL url = new URL(urlStr);

            HttpClient client = HttpClient.newHttpClient();

            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);

            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type", "Value");
            connection.connect();

            //builds the post body, adds parameters
            final DataOutputStream out = new DataOutputStream(connection.getOutputStream());
            //out.writeBytes(toJSON(globalId)); 
            out.flush();
            out.close();

            //Reading the response
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputline;

            while ((inputline = in.readLine()) != null) {
                response.append(inputline);
            }
            in.close();

            connection.getResponseCode();
            connection.disconnect();

        } catch (final Exception ex) {

            ex.printStackTrace();
            System.out.println(" error ");
        }

        return response.toString();

    }

}
class main {

    public static void main(String[] args){
        endpointtest ep = new endpointtest();
        ep.endpoint("localhost:8080/endpoint","123");
    }
}

为什么会发生这种错误?原谅我,如果有基本的错误,我是新的网络开发

hgtggwj0

hgtggwj01#

你还没有包括协议( http / https )在url字符串中。
把它改成 ep.endpoint("http://localhost:8080/endpoint", "123"); 它应该有用。

相关问题