我的情景是,
我有一个带有名为“Search”的按钮的文本字段,当我在文本字段中输入一个值并单击搜索按钮时,该值应该写入/写入现有的JSON文件中。请找到以下代码。
function search_criteria()
{
var inputData = document.getElementById("sel").value;
var fileDetails =
{
'fileName' : 'sample.json',
'fieldName' : 'field1',
'inputValue' : inputData
}
$
.ajax({
type : "GET",
url : "/abc/rest/input_value/search_action",
data : JSON.stringify(fileDetails),
contentType : 'application/json',
success : function(msgr) {
},
error : function(data) {
alert("Inside error while adding input in search field"
+ data);
}
});
}
Java代码
@GET
@Path("/search_action")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response search_action(@Context HttpServletRequest request,
JSONObject inputJsonObj)
throws JSONException, FileNotFoundException, IOException {
String relativeWebPath = "/TEMP/scenario_content/" +
inputJsonObj.get("fileName").toString();
String absoluteDiskPath =
request.getServletContext().getRealPath(relativeWebPath);
File file = new File(absoluteDiskPath);
if(!file.exists())
{
file.createNewFile();
}
JSONObject json = new JSONObject();
json.put(inputJsonObj.getString("fieldName"),
inputJsonObj.getString("inputValue"));
FileWriter fw = new FileWriter(absoluteDiskPath);
fw.write(json.toString());
return Response.status(Status.OK).entity("success").type(MediaType.APPLICATION_JSON)
.header("X-Content-Type-Options", "nosniff").build();
}
使用此代码我收到以下错误。
org.apache.coyote.http11.AbstractHttp11Processor
process
INFO: Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at
DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:283)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1045)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1533)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1489)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
此外,我在浏览器控制台中收到了404 Bad Request。请帮我解决这个问题。
答案 0 :(得分:0)
在您显示的代码中,控制器的路径为@Path("/search_criteria")
,但在您的ajax调用中,您的网址为url : "/abc/rest/input_value/searchAction",
,因此他们不会获得404. < / p>