【发布时间】:2018-03-22 04:56:30
【问题描述】:
我正在尝试向在localhost:9090 上运行的服务器 (JBOSS) 发送一个 POST 请求,如下所示,但它似乎不起作用。我的意思是,我没有看到我的网络服务被执行。我在下面做所有事情吗?
由于$_POST["mydata"] 包含以下内容:
[{ "name": "FirstName", "value": "Mickey" }, { "name": "LastName", "value": "Mouse" }]
这是在 javascript 对象上运行 JSON.stringify() 的结果(使用 serializeArray()),我没有在标头中发送 application/json 相关的东西。
$urlTest = 'http://localhost:9090/JAXRS_POST_Request/rest/Request/insertDataToDB';
$rCURL = curl_init();
curl_setopt($rCURL, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($rCURL, CURLOPT_POSTFIELDS, $_POST["myData"]);
curl_setopt($rCURL, CURLOPT_URL, $urlTest);
curl_setopt($rCURL, CURLOPT_HEADER, 0);
curl_setopt($rCURL, CURLOPT_RETURNTRANSFER, 1);
$response_post = curl_exec($rCURL);
curl_close($rCURL);
但是如果我必须使用像 POSTMAN 这样的客户端手动测试 web 服务,我必须在标题下指定 Content-Type : application/json 并通过 Body 像这样发送它,它在那里工作得非常好:
但是在通过 curl 发送请求时,由于JSON.stringify() 将 javascript 对象转换为字符串以将其发送到服务器,所以我很困惑是否需要在我的 POST 请求中使用标头。
附:一个简单的基于 curl 的 GET 请求对我来说效果很好,所以我的应用程序成功地联系了服务器。
【问题讨论】: