带有输入json的curl POST命令,请求Jersey服务,给出HTTP 415错误

时间:2018-08-02 18:52:07

标签: java curl jersey-1.0

我尝试通过curl命令发送发帖请求=>

  

curl -H'Content-Type:应用程序/ json'-X POST
  http://:8080 / JerseyWeb / rest / restservice /删除eDBObjects -d   '{“ url”:   “:1521:orcl1”,“ dbUser”:“ soumchat”,“ dbPassword”:“ soumchat_123”,“ sqlScriptFilePath”:“ D:\ Issues \ 28344094   -POC存储库清理-CONTENT \ dropObjects \ dropTablesViewsSequences.sql“}'

输出:

  

HTTP状态415 –不支持的媒体类型类型状态报告

 Message Unsupported Media Type
     

描述原始服务器拒绝为请求提供服务,因为有效负载的格式不受目标资源上此方法的支持

以下分别是我的json类,web.xml和rest webservice:

RestServices.java
--------------
    package com.jersey.service;

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.LineNumberReader;
    import java.io.PrintWriter;
    import java.io.Reader;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;

    import javax.ws.rs.Consumes;
    import javax.ws.rs.GET;
    import javax.ws.rs.POST;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Produces;
    import javax.ws.rs.QueryParam;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    import javax.ws.rs.core.Response.Status;
    import com.jersey.service.json.Message;
    import com.jersey.service.json.SQLParam;

    @Path("/restservice")
    public class RestServices {
    private static final String DEFAULT_DELIMITER = 
    ";";

    private Connection conn;
    private boolean stopOnError;
    private boolean autoCommit;
    private PrintWriter logWriter = new 
    PrintWriter(System.out);
    private PrintWriter errorLogWriter = new 
    PrintWriter(System.err);

     private String delimiter = DEFAULT_DELIMITER;

    /*
     * @GET
     * 
     * @Path("/removeDBObjects")
     * 
     * @Produces(MediaType.TEXT_PLAIN) public Response 
      removeDBObjects() {
     * 
     * return Response.ok("Hello").build(); }
     */
      @POST
      @Path("/removeDBObjects")
      @Produces(MediaType.TEXT_PLAIN)
      @Consumes(MediaType.APPLICATION_JSON)
      public Response removeDBObjects1(SQLParam 
      sqlParams) {
        String url = sqlParams.getUrl();
        String dbUser = sqlParams.getDbUser();
        String dbPassword = sqlParams.getDbPassword();
        String       

       sqlScriptPath=sqlParams.getSqlScriptFilePath();
       try {
            DriverManager.setLoginTimeout(300);
            conn = getConnectionasDbUser(dbUser, 
            dbPassword, url);
            Reader reader = new BufferedReader(new 
            FileReader(new File(sqlScriptPath)));
            if (!(conn == null) && !(reader == null) 
            && reader.ready())
                runScript(conn, reader);
            return Response.ok("Hello").build();
            } catch (SQLException | IOException ex) {
            return Response.status
            (Status.INTERNAL_SERVER_ERROR).build();
            }
           }
           }

SQLParams.java
--------------
         package com.jersey.service.json;
         import 
         javax.xml.bind.annotation.XmlRootElement;

        @XmlRootElement
        public class SQLParam {
        private String url;
        private String dbUser;
        private String dbPassword;
        private String sqlScriptFilePath;

        public SQLParam() {

        }

        public SQLParam(String url, String dbUser, 
        String dbPassword, String sqlScriptFilePath) {
          this.url = url;
          this.dbUser = dbUser;
          this.dbPassword = dbPassword;
          this.sqlScriptFilePath = sqlScriptFilePath;
        }

        public void setUrl(String url) {
          this.url = url;
        }

        public void setDbUser(String dbUser) {
          this.dbUser = dbUser;
        }

        public void setDbPassword(String dbPassword) {
            this.dbPassword = dbPassword;
        }

        public void setSqlScriptFilePath(String 
        sqlScriptFilePath) {
             this.sqlScriptFilePath = 
         sqlScriptFilePath;
        }

        public String getUrl() {
            return url;
        }

        public String getDbUser() {
             return dbUser;
        }

        public String getDbPassword() {
             return dbPassword;
        }

        public String getSqlScriptFilePath() {
             return sqlScriptFilePath;
        }

       @Override
       public String toString() {
            return new   
         StringBuffer("url:").
         append(this.url).append(",dbUser:")
        .append(this.dbUser)
        .append(",dbPassword:") 
        .append(this.getDbPassword())
        .append(",sqlScriptFilePath:")
        .append(this.sqlScriptFilePath).toString();
      }
      }

web.xml
-------
      <?xml version="1.0" encoding="UTF-8"?>
      <web-app 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema- 
      instance" 
      xmlns="http://java.sun.com/xml/ns/javaee" 
      xsi:schemaLocation="http://java.sun.com
      /xml/ns/javaee 
      http://java.sun.com/xml/ns/javaee/web- 
      app_3_0.xsd" id="WebApp_ID" version="3.0">
      <display-name>com.jersey.service</display-name>
      <servlet>
      <servlet-name>jersey_servlet</servlet-name>
      <servlet-class>com.sun.jersey.spi.container
      .servlet.ServletContainer</servlet-class>
      <!-- Register resources and providers under 
      com.vogella.jersey.first package. -->
      <init-param>
            <param- 
            name>jersey.config.server.provider
            .packages</param-name>
            <param-value>com.jersey.service</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_servlet</servlet-name>
         <url-pattern>/rest/*</url-pattern>
         </servlet-mapping>
         </web-app>
JARs
-----
      asm.jar
      jersey-client-1.10.jar
      jersey-core.jar
      jersey-json-1.18.3.jar
      jersey-multipart.jar
      jersey-server.jar
      jersey-servlet.jar
      json.jar

What am I missing?
> Blockquote

1 个答案:

答案 0 :(得分:0)

CURL命令中的Content-Type不正确。请使用以下示例。 内容类型:application / xml