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

问题描述:

我正在发送POST请求cia cURL,并且在我的Java服务器中解析它时,它没有问题。如何格式化AJAX POST请求与cURL?

卷曲-H “内容类型:应用程序/ JSON” -d '{ “URL”: “http://example.com”}' http://example-server.com/pathtoserver

我通过抓的要求在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"} 

但是当我通过一个jQuery AJAX请求发送它,我得到一个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编码现在,再加上而不是用花括号JSON对象(网址:{url:...})之类的第一个,它说“url = ...”

cURL vs AJAX post请求有什么内在的不同吗?或者我格式化错了什么?

+0

您是否阅读GET?您肯定会通过AJAX发送POST请求 – 2014-09-29 22:15:34

您需要手动将对象串化为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); } 
    });