java - 如何用 java 将文件上传到 Restful Web 服务?

标签 java web-services rest maven jax-rs

我对用 java 构建 REST Web 服务相当陌生(在 .NET 世界中构建了几个),并且我遇到了一个问题,我的 google-fu 也没有找到答案。我有一个发布方法:

@POST
@Consumes(value = MediaType.MULTIPART_FORM_DATA)
public Response postFile(@FormDataParam("file") InputStream content,
        @FormDataParam("file") FormDataContentDisposition fileDetail) {
    String fileName = fileDetail.getName();
    String ext = getFileExtension(fileName);
    URI uri = context.getBaseUri();

    UUID userId = processData.SubmitData(content, ext);

    return Response.created(URI.create(uri + "/api/appuser/" + userId)).build();
}

当我尝试发帖时返回 404。我正在使用最新版本的 Jax-rs、glassfish 等。

我的web.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>ScoringApp</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

    <servlet>
        <servlet-name>Scoring Web Application</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <!-- Enable Tracing support. -->
        <init-param>
            <param-name>jersey.config.server.tracing</param-name>
            <param-value>ALL</param-value>
        </init-param>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.scoringapp.api</param-value>
        </init-param>
        <init-param>
           <param-name>javax.ws.rs.Application</param-name>
           <param-value>com.scoringapp.api.MyApplication</param-value>
       </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Scoring Web Application</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
</web-app>

还有我的应用程序类:

public class MyApplication extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        final Set<Class<?>> classes = new HashSet<Class<?>>();
        // register resources and features
        classes.add(MultiPartFeature.class);
        classes.add(FileResource.class);
        classes.add(LoggingFilter.class);
        classes.add(CORSResponseFilter.class);
        classes.add(CORSRequestFilter.class);
        return classes;
    }
}

还有什么可以帮助我解决这个问题的吗? (在 Maven 中运行这个,使用动态 Web 应用程序,我遵循了教程:) 还有一些其他测试端点可以正常工作,所以我知道我可以访问它,并且点击基本 url 返回我创建的 index.html,以确保一切都在那里。)

最佳答案

看起来我的问题是没有正确遵循 HTML 规范并观察我的 URI 大小写。我的错...

关于java - 如何用 java 将文件上传到 Restful Web 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33029915/

相关文章:

rest - 是否有 UDDI 或任何其他用于 RESTful Web 服务的注册中心

Java:如何在Java中从xml中获取属性名称?(JDOM)

java - invokeAndWait 似乎会导致应用程序间歇性卡住

Java Observer 和 Observable 在应用程序之间无法正常工作

java - 从 Jboss7 迁移到 WildFly10 后,WebContext 不再受支持

rest - 使用 PostMan 工具从 Rest Web 服务保存 Zip 文件

java - 以多对多关系的方式将数据添加到对象中,

web-services - 在meteor中使用HTTP.get获取通过HTTP.post发布的数据

java - 模拟Web服务不可用时

REST - 404 未找到