当前位置: 首页 > 知识库问答 >
问题:

当我使用带有x-www-urlencoded的邮递员时,泽西岛总是产生状态415!为什么?

高宇定
2023-03-14

我试图学习Jersey,它是基于Jax-RS规范的Java REST框架。我正在pluralsite上做一个教程,但不是很好。但无论如何,我已经到了使用谷歌Chromes postman向我的服务提交url编码的表单参数的地步。

我用于资源方法的类叫做ActivityResource。每个@GET注释的方法都有效,但@POST方法无效。

我提交的路径localhost:8080//webapi/activities/activity

不管怎样,如果我在路径参数前面插入斜杠,重新排列注释头,或者应用老式的“application/x-www-form-urlencoded”参数,我总是得到一个糟糕的HTTP状态415-篡夺媒体类型响应。有人知道我错过了什么吗。我需要一个丢失的罐子吗?

@路径(“活动”)公共类ActivityResources{

private ActivityRepository activityRepository = new ActivityRepositoryStub();


@POST
@Path("activity")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public Activity createActivityParams(MultivaluedHashMap<String, String> formParams) {

    System.out.println(formParams.getFirst("description"));
    System.out.println(formParams.getFirst("duration"));

    Activity activity = new Activity();
    activity.setDescription(formParams.getFirst("description"));
    activity.setDuration(Integer.parseInt( formParams.getFirst("duration")));

    String id = String.valueOf( activityRepository.findAllActivities().size() );
    activity.setId(id);

    activityRepository.findAllActivities().add(activity);

    return activity;
}

.....My Get methods down here which actually output functioning results

}

这是我的POM文件

http://maven.apache.org/maven-v4_0_0.xsd"

<modelVersion>4.0.0</modelVersion>

<groupId>com.example</groupId>
<artifactId>simple-service-webapp</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>simple-service-webapp</name>

<build>
    <finalName>simple-service-webapp</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.5.1</version>
            <inherited>true</inherited>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.glassfish.jersey</groupId>
            <artifactId>jersey-bom</artifactId>
            <version>${jersey.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <!-- use the following artifactId if you don't need servlet 2.x compatibility -->
        <!-- artifactId>jersey-container-servlet</artifactId -->
    </dependency>

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
        <version>2.1</version>
    </dependency>

    <!--
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-client</artifactId>
        <version>2.5.1</version>
        <scope>provided</scope>
    </dependency>
     -->


</dependencies>
<properties>
    <jersey.version>2.5.1</jersey.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

共有2个答案

慕阳
2023-03-14

在同一课程上搜索相同问题时看到了这个。进一步查找后发现了问题...

问题是当您需要为方法参数使用Multivalue edMap时,您正在使用Multivalue edHashMap。

贝财
2023-03-14

好的,我相信教授pluralsight教程的人一定会做到这一点,但通过做一点搜索,所有java搜索的普遍结果(MKyong)给了我一个很好的解决方法,建议使用@FormParam注释,而不是多值hashmap。哈利路亚

createActivityParams(@FormParam(“描述”)字符串desc,@FormParam(“持续时间”)字符串持续时间)

 类似资料:
  • 我目前使用的是球衣 我现在要做的是设置泽西,这样当查询参数进来时(比如缩进),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器来轻松地告诉Jackson这样做。 问题是,我如何在每个请求的基础上获取一个queryparam并使用它来修改Jackson的输出?

  • 我正在尝试使用,但数据没有到达PHP。我认为这是因为当使用标题始终设置为

  • 我现在正在尝试泽西,按照这个链接在netbean中设置了一个网络服务。我有我的实体类和REST类。它可以从javafx2客户端添加、编辑、删除、请求对象(在本例中是用户对象)。 然而,现在我尝试向我的网络服务添加一个新方法来进行一些简单的身份验证。首先,我在Users.java文件中添加了一个新的命名查询(Users.login): 之后,我将以下代码添加到我的UsersFacadeREST.ja

  • 编辑:这是ackson jaxrs-base早期版本中的一个问题,已在jackson-jaxrs-base-2.8中解决。https://github.com/FasterXML/jackson-jaxrs-providers/issues/22 我正在努力解决这个问题,只有mapper例外。我想映射com的所有子级。fasterxml。杰克逊。果心JsonProcessingException在

  • 我想我在问这个问题,但对于Jersey 1.x:Jersey 2.0的依赖注入 我使用的是Glassfish 3、CDI和Jersey 1.x。我有一个< code>@WebService正在注入这样一个类: 我已经中对此进行了测试,并且它有效。但是,当我的泽西岛资源中的同一行代码在尝试使用 时会引发 NPE。我认为泽西岛 1.x 忽略了 CDI 注释。如何使依赖关系注入像中一样工作? Foo是一

  • 我为Django API项目编写了一个基于angular的客户端应用程序。其中一个endpoint接受application/x-www-form-urlencoded格式的请求,因为它同时包含文件和字符串数据,我很确定它在服务器端工作正常——我已经使用POSTMAN准备了一个application/x-www-form-urlencoded请求: 当然,服务器响应正确,并且已添加文件。以下是确切