Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
Jquery Codeception-发布原始JSON字符串_Jquery_Json_Rest_Codeception_Postman - Fatal编程技术网

Jquery Codeception-发布原始JSON字符串

Jquery Codeception-发布原始JSON字符串,jquery,json,rest,codeception,postman,Jquery,Json,Rest,Codeception,Postman,我使用jQuery发送以下请求 var url = 'http://site.local/api/package/create'; var data = { "command": "package", "commandParameters": { "options": [ { "a": true } ], "parameters": { "node_id": 1111, "node_name": "N

我使用jQuery发送以下请求

var url = 'http://site.local/api/package/create';
var data = {
  "command": "package",
  "commandParameters": {
    "options": [
      {
        "a": true
      }
    ],
    "parameters": {
      "node_id": 1111,
      "node_name": "Node Name"
    }
  }
}
$.ajax({
    url: url,
    type: "POST",
    data: JSON.stringify(data),
    contentType: "application/json",
    success: function (a, b, c) {
        // Do something with response
    }
});
还可以使用Postman(Chrome插件)执行类似操作

我打算向服务器发送一个原始JSON字符串,而不是让Jquery将其转换为post数据。 如何在Codeception中执行相同的操作,我只是在文档中看不到,我只看到以下内容

$I->sendAjaxPostRequest('/updateSettings', array('notifications' => true));

因此,我想我想在Codeception中发出一个POST请求,同时在请求体中附加JSON?

我想你应该告诉jQuery不要处理你传递的数据。 试试这个

在php端,您可以使用以下代码获取原始数据

$rawdata = file_get_contents('php://input'); 

codeception/src/codeception/Module/REST.php中的encodeApplicationJson函数检查标题“Content Type”和值“application/json”是否存在

如果设置了这个参数,它将返回json_encode($parameters),这是一个我想要的字符串,所以我最终会执行类似的操作

    $I->haveHttpHeader('Content-Type', 'application/json');
    $I->sendPOST('api/package/create', [
        'command' => 'package',
        'commandParameters' => [
            'options' => [],
            'arguments' => []
        ]
    ]);
    $I->canSeeResponseCodeIs(200);
    $I->seeResponseIsJson();
有关sendpostsendajaxpostrest之间差异的一些信息

$rawdata = file_get_contents('php://input'); 
    $I->haveHttpHeader('Content-Type', 'application/json');
    $I->sendPOST('api/package/create', [
        'command' => 'package',
        'commandParameters' => [
            'options' => [],
            'arguments' => []
        ]
    ]);
    $I->canSeeResponseCodeIs(200);
    $I->seeResponseIsJson();