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

javax.ws.rs.处理异常:找不到内容类型应用程序的编写器/x-www-form-urlencoded类型

包谭三
2023-03-14

我正在使用MediaType中的“resteasy客户端”库发送POST请求。申请表格编码类型。

示例代码:

String serviceUrl = "URL";

    ConnectRequest connectRequest = new ConnectRequest();
    connectRequest.setUsername("");
    connectRequest.setPassword("");
    connectRequest.setScope("bearer");
    connectRequest.setGrant_type("");

    Entity<ConnectRequest> entity = Entity.entity(connectRequest,
                MediaType.APPLICATION_FORM_URLENCODED_TYPE);

    ResteasyClient client = new ResteasyClientBuilder().build();
    ResteasyWebTarget target = client.target(serviceUrl);

    Response response = target.request().post(entity);

    System.out.println("RESP : "+response.toString());

Maven依赖项

    <properties>
    <java.version>1.7</java.version>
    <resteasy.version>3.0.4.Final</resteasy.version>
</properties>
<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-client</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson-provider</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-servlet-initializer</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>jaxrs-api</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxb-provider</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-multipart-provider</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
</dependencies>     

连接工作正常,并在使用POSTMAN请求时发送正确的响应

但是在请求使用程序后,它会创建错误

回应:

javax.ws.rs.处理异常:找不到内容类型应用程序的编写器/x-www-form-urlencoded类型

请帮忙。。。

共有2个答案

谯志诚
2023-03-14

我创建了一组可以导入的阅读器/编写器,用于处理表单编码到java对象的自动绑定:https://github.com/exabrial/form-binding这比创建一个表单实例要容易一点。

严信瑞
2023-03-14

您不能使用POJO发送应用程序/x-www-form-urlencoded。您需要使用javax。ws。rs.core。形成课程。

Form connectRequest = new Form()
    .param("username", "...")
    .param("password", "...")
    .param("client_id")
    ...;

您还可以使用Entity.form(连接请求),这是一种速记,因此您不必使用MediaType.APPLICATION_FORM_URLENCODED_TYPE

另外,解析响应时也可以看到这个。您不需要依赖项。您已经有了RESTEasy的依赖项。

 类似资料: