Java.net.MalformedURLException: 未知协议:localhost 在 controller.RestController.addService(RestController.java:62)。

10
我正在尝试向服务器发送HTTP POST请求,但我的控制器却抛出了一个URL格式错误的异常。 控制器代码
public static final String REST_SERVICE_URI = "localhost:8081/create";

接收来自服务器的请求的控制器方法

@RequestMapping(value="AddService",method = RequestMethod.POST)
@ResponseBody
 public void addService(@ModelAttribute("servDetForm")) throws IOException{
    //return dataServices.addService(tb);

     URL serv;
     URLConnection yc;
    try {
        serv = new URL(REST_SERVICE_URI);
          yc = serv.openConnection();
        try {
            yc = serv.openConnection();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         BufferedReader in;
         in = new BufferedReader(new InputStreamReader(yc.getInputStream()));

         String inputLine;

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

    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
 }

这是我的JSP视图

<form:form method="POST" commandName="servDetForm" action="AddService">
              <table style="appearance:dialog ">

                    <tr>
                        <td>Number</td>
                        <td><form:input path="Numbers"/></td>
                    </tr>

我错在哪里了?


1
本地主机名是主机名,而不是协议。您需要在REST_SERVICE_URI中指定一个协议http/https等。因此,它应该像http://localhost:8081/ItaxServ/create这样。 - Sandeep Poonia
使用 http://localhost:8081/ItaxServ/create 会报错,错误信息为 java.io.IOException: Server returned HTTP response code: 400 for URL: localhost:8081/ItaxServ/create。 - Blaze
2个回答

14

链接应该是这个:

"http://localhost:8081/ItaxServ/create"

或者也许

"https://localhost:8081/ItaxServ/create"

"http"或"https"是URL的协议部分,解析器正在寻找它。没有协议的URL不是有效的URL。(它是一个相对URI,只能与另一个URL相关联解析。)

URI解析器将第一个冒号之前的内容解释为协议。在您损坏的URL中,这意味着主机名(在您的情况下为“localhost”)被错误地视为协议字符串。但是,没有针对该名称的注册协议处理程序...因此解析器会显示“未知协议:localhost”。


添加 http:// 解决了我的问题。 - Bünyamin Şentürk

-2

Malformed URL异常是与您传递的URI相关的问题,该URI作为"REST_SERVICE_URI"参数传递。

需要传递一个带有有效协议(如http、https等)的REST_SERVICE_URI参数。


OP没有将它作为“REST_SERVICE_URI”传递。 - user207421

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接