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

获取工作岗位不工作[重复]

李成礼
2023-03-14

我正在使用泽西开发一个API,并希望将其准备好部署到Google App Engine。但是,当我在Postman上测试时,GET函数有效,但POST函数无效。我只收到一条简短的错误消息,即“错误415不支持的媒体类型”,我无法确定哪里出了问题。

package com.yihwei95.gatewaynetworkinterface.resource;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
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 com.yihwei95.gatewaynetworkinterface.model.AppDataRequest;
import com.yihwei95.gatewaynetworkinterface.service.AppDataService;

@Path("/v1/")
public class AppDataResource {
    AppDataService ads = new AppDataService();

    @Produces(MediaType.APPLICATION_JSON)
    @GET
    @Path("/v2")
    public String getAppData(){
        return "No";
    }

    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    @POST
    @Path("/v3")
    public Response getSAppData(AppDataRequest adr) {
        Response data = ads.getSAppData(adr.getId(), adr.getEmail(), adr.getPassword());
        return data;
    }
}

请求资源类

package com.yihwei95.gatewaynetworkinterface.service;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.ws.rs.core.Response;

import com.google.gson.Gson;
import com.yihwei95.gatewaynetworkinterface.model.AppData;
import com.yihwei95.gatewaynetworkinterface.model.AppDataRequest;
import com.yihwei95.gatewaynetworkinterface.model.Data;

public class AppDataService {
    Map<AppDataRequest, Data> DataHM = new HashMap<>();

    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://****:3306/demo";

    static final String USER = "****";
    static final String PASS = "****";

    public AppDataService(){
        Connection conn = null;
        Statement stat = null;
        try{
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            stat = conn.createStatement();
            String sql = "SELECT * FROM testdata";
            ResultSet resu = stat.executeQuery(sql);
            while(resu.next()){
                int id = resu.getInt("app_id");
                String email = resu.getString("email");
                String password = resu.getString("password");
                String token = resu.getString("token");
                DataHM.put(new AppDataRequest(id, email, password), new Data(token));
            }
            resu.close();
            stat.close();
            conn.close();
        }
        catch(SQLException se){
            se.printStackTrace();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally{
            try{
                if(stat!=null){
                    stat.close();
                }
            }
            catch (SQLException se2){
                se2.printStackTrace();
            }
            try{
                if(conn!=null){
                    conn.close();
                }
            }
            catch(SQLException se3){
                se3.printStackTrace();
            }
        }       
    }

    public Response getSAppData(int id, String email, String password){ 
        Map<String, AppData> AppDataHM = new HashMap<>(); 
        Map<String, Data> DataHM1 = new HashMap<>();
        Map<String, List<String>> DataHM2 = new HashMap<>();
        HashMap<Object, Object> ADHMDHM = new HashMap<>();

        List<String> message = new ArrayList<>();
        Data data = DataHM.get(new AppDataRequest (id, email, password));
        List<String> data2 = new ArrayList<>();

        if(data != null){
            message.add("");
            AppDataHM.put("AppData", new AppData("success", message));
            DataHM1.put("Data", data);
            ADHMDHM.putAll(AppDataHM);
            ADHMDHM.putAll(DataHM1);
            String ADHMDHM1 = new Gson().toJson(ADHMDHM);
            return Response.status(200).entity(ADHMDHM1).build();
        }
        else{
            message.add("Your login information is invalid. Please try with the correct information");
            AppDataHM.put("AppData", new AppData("error", message));
            DataHM2.put("Data", data2);
            ADHMDHM.putAll(AppDataHM);
            ADHMDHM.putAll(DataHM2);
            String ADHMDHM2 = new Gson().toJson(ADHMDHM);
            return Response.status(200).entity(ADHMDHM2).build();
        }   
    }
}

请求服务等级

<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.yihwei95.gatewaynetworkinterface.resource</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/api/*</url-pattern>
</servlet-mapping>

网状物XML

提前感谢所有帮助我指出并解决问题并回答我问题的人。

共有2个答案

赵嘉纳
2023-03-14

当您试图命中的资源未提供正确的有效负载时,即资源消耗的数据格式不符合预期时,就会发生此问题。根据共享的问题详细信息,此问题可能是以下任一问题:

>

com.sun.jersey球衣-json 1.8

您可以在以下位置关注Jax-Rs的泽西实现:http://www.mkyong.com/webservices/jax-rs/json-example-with-jersey-jackson/

荀振国
2023-03-14

添加此依赖项

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>JERSEY_VERSION</version>
</dependency>
 类似资料:
  • 我创建了这段代码,其中大部分代码都是使用toUpperCase,它应该使单词的每个首字母都大写。没有错误,因此我不确定该方法当前为何不起作用。为什么会这样呢。

  • 我正试图在Android中做一个向后兼容的工具栏,我遵循了多种风格指南中给出的所有建议来尝试和完成这个。然而,它似乎仍然不起作用。风格是这样的: 这是工具栏: 这是onCreate方法的主要活动: 不太确定出了什么问题,因为我遵循了许多消息来源给出的所有说明。这是日志: 我花了几个小时研究这段代码,以及无数的教程和StackOverflow问题,但是毫无用处。如果有人能帮助我,我将不胜感激。提前感

  • 我需要从中的中的代码访问工作目录,比如: 在中我们可以访问它 是否具有等效性? @更新 问题是我需要在文件夹中搜索一些接口的实现。应用程序将在不同的机器上执行,因此我应该有一个路径,该路径将始终导航到文件夹 @update2 我需要在我执行应用程序的文件夹中查找名为的带有

  • 我正在使用来训练CNN,基本错误是维度不匹配。 调试后的原因是: 生成输出: 如果需要,我的模型的摘要是: convolution2d_1(卷积2D)(无,32, 25, 34) 320convolution2d_input_1[0][0] activation\u 1(activation)(无、32、25、34)0卷积2d\u 1[0][0] 卷积2d\u 2(卷积2d)(无,32,23,32

  • 我有三个数组来制作一个tableView和第二个ViewController。一个显示tableView上每个节的标题,一个显示标题,还有一个显示每个单元格的链接。当我构建并点击其中一个单元格时,我会得到: 致命错误:在展开可选值时意外发现nil 在这条线上: 下面是第二个视图控制器代码: