我正在尝试向服务器发送一个 http 帖子,但我从我的 Controller 收到一个格式错误的 url 异常
Controller 代码
public static final String REST_SERVICE_URI = "localhost:8081/create";
Controller 中接收服务器请求的方法
@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 View
<form:form method="POST" commandName="servDetForm" action="AddService">
<table style="appearance:dialog ">
<tr>
<td>Number</td>
<td><form:input path="Numbers"/></td>
</tr>
我哪里错了?
最佳答案
网址应该是这样的:
"http://localhost:8081/ItaxServ/create"
或者也许
"https://localhost:8081/ItaxServ/create"
“http”或“https”是解析器正在查找的 URL 的协议(protocol)部分。没有协议(protocol)的 URL 不是有效的 URL。 (它是一个相对 URI,只能相对于另一个 URL 进行解析。)
URI 解析器将第一个冒号之前的内容解释为协议(protocol)。在您损坏的 URL 中,这意味着主机名(在您的情况下为“localhost”)被错误地视为协议(protocol)字符串。但是,没有为具有该名称的协议(protocol)注册的协议(protocol)处理程序......因此解析器说“未知协议(protocol):本地主机”。
关于java.net.MalformedURLException : unknown protocol: localhost at controller. RestController.addService(RestController.java:62),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37703383/