Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何格式化AJAX POST请求与cURL?_Java_Jquery_Ajax_Json_Servlets - Fatal编程技术网

Java 如何格式化AJAX POST请求与cURL?

Java 如何格式化AJAX POST请求与cURL?,java,jquery,ajax,json,servlets,Java,Jquery,Ajax,Json,Servlets,我正在发送一个POST请求,当在Java服务器中解析它时,一切正常 curl-H“内容类型:application/json”-d'{“url”:“}” 我通过以下方式获取Java中的请求: StringBuilder buffer = new StringBuilder(); BufferedReader reader = request.getReader(); String line; while ((line = reader.readLine()) != null) { bu

我正在发送一个POST请求,当在Java服务器中解析它时,一切正常

curl-H“内容类型:application/json”-d'{“url”:“}”

我通过以下方式获取Java中的请求:

StringBuilder buffer = new StringBuilder();
BufferedReader reader = request.getReader();
String line;

while ((line = reader.readLine()) != null) {
    buffer.append(line);
}

String data = buffer.toString();

if (logger.isInfoEnabled()) {
    logger.info("Data grabbed for POST data: " + data);
}
日志语句是:

2014-09-29 16:29:19,153 [INFO] [pool-16-thread-16] LOG - Data grabbed for POST data: {"url":"http:example.com"}
但是,当我通过jqueryajax请求发送它时,会得到一个JSONException错误。我是否格式化了请求

$('#validate').click(function() {
    alert($('#url').val());
    console.log($('#url').val());
    $.ajax(
        {url: "/pathtoserver/",
         type: "POST",
         data: {url:$('#url').val()},
         success: function(data) { handleValidateResponse(data); console.log(data); }
        });
    });
日志还指出:

2014-09-29 16:27:08,145 [INFO] [pool-16-thread-14] LOG - Data grabbed for POST data: url=http%3A%2F%2Fexample.com
URL现在已被编码,并且不再像第一个那样使用大括号({URL:…})的JSON对象,而是显示“URL=…”


cURL和ajaxpost请求有什么本质上的不同吗?还是我的格式有问题

您需要手动将对象字符串化为JSON。否则,jQuery会将对象转换为一个键/值对字符串。我还想添加
contentType:“application/json”
只是为了安全起见:

$.ajax(
    {url: "/pathtoserver/",
     type: "POST",
     contentType: "application/json",
     data: JSON.stringify({url:$('#url').val()}),
     success: function(data) { handleValidateResponse(data); console.log(data); }
    });

你读过GET的书吗?您肯定是在用AJAX发送POST请求