我尝试通过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
答案 0 :(得分:0)
CURL命令中的Content-Type不正确。请使用以下示例。 内容类型:application / xml