简体   繁体   English

当我尝试使用JSON数据时,POST到Jersey REST服务获取错误415不支持的媒体类型

[英]POST to Jersey REST service getting error 415 Unsupported Media Type when I try to consume JSON data

I am using a JAX-RS web application with Jersey and Tomcat. 我正在使用Jersey和Tomcat的JAX-RS Web应用程序。 Post requests are fine however when I try to consume JSON data I get an HTTP status 415 - Unsupported Media Type. 发布请求很好但是当我尝试使用JSON数据时,我得到一个HTTP状态415 - 不支持的媒体类型。

Here is my Code: 这是我的代码:

package com.sms.presentationT;
import java.io.Serializable;
import javax.ws.rs.Consumes;
import javax.ws.rs.FormParam;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.json.simple.JSONObject;
import org.json.simple.parser.ParseException;
import com.sms.userServices.*;
import com.sms.Registrations.Regitration;
import com.sms.persistenceT.*;
import com.sms.persistenceT.*;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

@Path("/user-servicesLogincheck1")
public class Check implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    @POST
    @Path("/LoginPagecheck1")
    //@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    @Consumes(MediaType.APPLICATION_JSON)
    //@Produces("application/json")
    @Produces(MediaType.APPLICATION_JSON)
    public Regitration loginUserInfo(@FormParam("logusertype") String logUserType, @FormParam("userNAME") String UserNAME,*emphasized text* @FormParam("PassWORD") String PAssWORD) throws ParseException
    {

        System.out.println(logUserType+UserNAME+PAssWORD);

        LoginUserServiceCheck LUS = new LoginUserServiceCheck();
        JSONObject jobj2 = new JSONObject();
        jobj2 = LUS.LoginInputDatacheck(logUserType,UserNAME, PAssWORD);

        System.out.println("ssssssssssssssssssssssssssss");

        System.out.println("Presentation jobj"+jobj2);


        String jsonText = jobj2.toJSONString();
        System.out.println(jsonText);

        JSONParser parser = new JSONParser();

        JSONObject newJObject = null;

        try {
            newJObject = (JSONObject) parser.parse(jsonText);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        //System.out.println(LUS.loginresponse);
        //System.out.println(LUS.resultStatus);
        /*
        if(LUS.resultStatus)
        { 
            System.out.println(LUS.loginresponse);


            return LUS.loginresponse;
            //return "UserName is valid";
        }
        else
        {
            return LUS.loginresponse;
        }

        */

        System.out.println(newJObject.get("Name"));
        System.out.println(newJObject.get("Email"));

        Regitration rg = new Regitration();

        rg.setUserType(logUserType);
        rg.setName((String)newJObject.get("Name"));
        rg.setEmail((String)newJObject.get("Email"));
        rg.setUserName((String)newJObject.get("userName"));
        rg.setPassword((String)newJObject.get("password"));
        rg.setConfirmPasssword((String)newJObject.get("password"));
        rg.setBirthDay((String)newJObject.get("birthday"));
        rg.setGender((String)newJObject.get("Gender"));
        rg.setMobileNo((String)newJObject.get("mobileNo"));
        rg.setCurrentAddress((String)newJObject.get("currentAddress"));

        rg.setPermenantAddress((String)newJObject.get("PermenantAddress"));
        rg.setCountry((String)newJObject.get("Country"));
        rg.setState((String)newJObject.get("state"));
        rg.setCity((String)newJObject.get("City"));

        rg.setLandmark((String)newJObject.get("Landmark"));
        rg.setZipCode((String)newJObject.get("ZipCode"));
        return rg;
    }

}

here is my web.xml file 这是我的web.xml文件

<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Restful Web Application</display-name>

<servlet>
    <servlet-name>jersey-serlvet</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.sms.presentationT</param-value>
    </init-param>

    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
         <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jersey-serlvet</servlet-name>
    <url-pattern>/pages/rest/*</url-pattern>
</servlet-mapping>

here is my POM.xml file 这是我的POM.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mkyong.common</groupId>
<artifactId>RESTfulExample</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>RESTfulExample Maven Webapp</name>
<url>http://maven.apache.org</url>

<repositories>
    <repository>
        <id>maven2-repository.java.net</id>
        <name>Java.net Repository for Maven</name>
        <url>http://download.java.net/maven/2/</url>
        <layout>default</layout>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.8.2</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.8</version>
    </dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.40</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey.contribs</groupId>
    <artifactId>jersey-multipart</artifactId>
    <version>1.8</version>
</dependency>   
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>1.18</version>
</dependency>

 <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20141113</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.json</artifactId>
        <version>1.0.4</version>
    </dependency>

     <dependency>
        <groupId>com.googlecode.json-simple</groupId>
        <artifactId>json-simple</artifactId>
        <version>1.1</version>
    </dependency>

    <dependency>
        <groupId>com.owlike</groupId>
        <artifactId>genson</artifactId>
        <version>0.99</version>
    </dependency>

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.3.1</version>
    </dependency>

</dependencies>

<build>
    <finalName>RESTfulExample</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>

I would like to point out your disuse of the java naming conventions. 我想指出你不使用java命名约定。

Your REST endpoint expects form data but you have indicated that it consumes JSON. 您的REST端点需要表单数据,但您已指出它使用JSON。 You should have your REST endpoint consume form data ie @Consumes(MediaType.APPLICATION_FORM_URLENCODED) Alternatively you can change the FormParam method parameters to POJO that matches your JSON object or a String parameter and then deserialize your JSON string to a POJO. 您应该让REST端点使用表单数据,即@Consumes(MediaType.APPLICATION_FORM_URLENCODED)或者,您可以将FormParam方法参数更改为与JSON对象或String参数匹配的POJO,然后将JSON字符串反序列化为POJO。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 POST到Jersey REST服务收到错误415不支持的媒体类型 - POST to Jersey REST service getting error 415 Unsupported Media Type 从Jsp向Rest Controller发送Json数据时获取415(不支持的媒体类型错误) - Getting 415(Unsupported media type error) while sending the Json data from Jsp to Rest Controller HTTP错误415使用XML参数(Jersey + Jetty)进行REST服务操作时不支持的媒体类型 - HTTP Error 415 Unsupported Media Type on REST service operation with an XML parameter (Jersey + Jetty ) Jersey,JSON API,“415不支持的媒体类型” - Jersey, JSON API, “415 Unsupported Media Type” 将内容发送到Jersey Rest端点时出现错误415(不受支持的媒体类型) - Error 415 (Unsupported Media Type) when sending content to Jersey Rest endpoint 错误 415 不支持的媒体类型:如果 JSON POST 未达到 REST,但如果 XML 则它会 - Error 415 Unsupported Media Type: POST not reaching REST if JSON, but it does if XML Http 状态 415 不支持的 JSON POST 的媒体类型错误 - Http status 415 Unsupported Media type error with JSON POST Jersey 415不支持的媒体类型 - Jersey 415 Unsupported Media Type 为什么会出现媒体类型不受支持的415错误? - Why am I getting Media type unsupported 415 error? 含球衣Java的POST返回415不支持的媒体类型 - POST with jersey Java return 415 unsupported media type
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM