【问题标题】:Java HTTP POST request to Spring MVC Controller对 Spring MVC 控制器的 Java HTTP POST 请求
【发布时间】:2014-01-08 10:10:31
【问题描述】:

我有一个带有以下方法定义的 Spring MVC 控制器:

@RequestMapping(value="SaveReading.htm",method=RequestMethod.POST)
protected void saveReading(Reading reading) throws ServletException, IOException {
    logger.debug("Received reading for id: " + reading.getMonitorId());
}

我需要通过生成POST HTTP 请求,从 Java 程序向该控制器发送数据。

我尝试了以下代码:

try {

    url = new URL("http://localhost:8080/WebApp/SaveReading.htm");
} catch (MalformedURLException e) {
    logger.error("Malformed URL ", e);
    return;
}
try {
    conn = (HttpURLConnection)url.openConnection();
    logger.debug("Opened Connection. " + conn.getURL());
    conn.setDoOutput(true);
    conn.setUseCaches(false);
    conn.setRequestMethod("POST");
    conn.connect();

    writer = new OutputStreamWriter(conn.getOutputStream());        
} catch (IOException e) {
    logger.error("Error setting up URL connection: ", e);
}

String data = "";
try {
    data = URLEncoder.encode("monitorId", "UTF-8") + "=" + URLEncoder.encode(id, "UTF-8");
    data += "&" + URLEncoder.encode("timeStamp", "UTF-8") + "=" + URLEncoder.encode(""+new Date().getTime(), "UTF-8");
} catch (UnsupportedEncodingException e) {
    logger.error("Encoding problem ", e);
}
System.out.println("Sending HTTP message: \n" + data);
// Send data
try {
    writer.write(data);
    writer.flush();

Java 代码未能到达控制器。 假设我的 Web 项目是“WebApp”,我使用的 URL 是否正确?

  • web.xml:

    <display-name>Web Application</display-name>  
    
    <servlet>  
        <servlet-name>ReadingsServlet</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    
    <servlet-mapping>  
        <servlet-name>ReadingsServlet</servlet-name>  
        <url-pattern>*.htm</url-pattern>  
    </servlet-mapping>  
    
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/ReadingsServlet-servlet.xml
        </param-value>
    </context-param>
    
  • ReadingsServlet-servlet.xml:

    <context:annotation-config />
    <context:component-scan base-package="com.myapp.familycare"/>
    
    <context:component-scan base-package="miscillaneous.property_placeholder" /> 
    
    <mvc:annotation-driven />
    
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    

【问题讨论】:

  • 以防万一,它是否与方法的“公共”修饰符一起使用?
  • 你能发布你的web.xmldispatcher-servlet.xml
  • 我尝试更改为公开。它没有帮助。
  • 另外,我忘记了 URL 中的 Tomcat 端口,但添加它也不起作用。
  • 如果您将localhost:8080/WebApp/SaveReading.htm 粘贴到浏览器中,您会在 Tomcat 日志中看到请求命中吗?

标签: java http spring-mvc post httprequest


【解决方案1】:

现在可以了。 我不确定是什么导致了之前的问题。

【讨论】:

    猜你喜欢
    • 2013-09-10
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2013-03-24
    相关资源
    最近更新 更多