【发布时间】:2016-05-15 18:50:19
【问题描述】:
我在尝试将 JSON 发送到 Java Web 服务时遇到问题。我正在使用 cURL 发布 JSON,但是 Web 服务响应我发送的参数为 NULL,请参阅下面的错误消息。
$data = "{'firstname': 'tom', 'surname' : 'tom', 'companyName' : 'test','phone' : 01234567, 'email' : 'test@test.com'}";
$ch = curl_init('http://10.50.1.71:8080/SME/api/details.json');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($buildApplicationJSON))
);
$result = curl_exec($ch);
var_dump($result);
我得到的回应是 -
字符串(1042) "{"errors":[{"object":"com.application.AppDetails","field":"firstname","rejected-value":null,"message":"Property [class com.application.AppDetails] 的 [firstname] 不能是 null"},{"object":"com.application.AppDetails","field":"surname","rejected-value":null,"message":"Property [class com.application.AppDetails] 的 [姓氏] 不能是 null"},{"object":"com.application.AppDetails","field":"companyName","rejected-value":null,"message":"Property [class com.application.AppDetails] 的 [companyName] 不能是 null"},{"object":"com.application.AppDetails","field":"phone","rejected-value":null,"message":"Property [class com.application.AppDetails] 的 [phone] 不能 null"},{"object":"com.application.AppDetails","field":"email","rejected-value":null,"message":"Property [class com.application.AppDetails] 的 [email] 不能 null"},{"object":"com.application.AppDetails","field":"sourceCode","rejected-value":null,"message":"Property [class com.application.AppDetails] 的 [sourceCode] 不能是 空"}]}"
更新:仍然无法正常工作。 $data JSON 行不是问题。在我以前的版本中,我有一个数组并使用了 json_encode
$buildApplication = array(
'firsname' => 'Keith',
'surname' => 'Francis',
'companyName' => 'Keiths Mobile Discos',
'phone' => '07123456789',
'email' => 'keith.francis@freedom-finance.co.uk',
'sourceCode' => 'W00T'
);
$data = json_encode($buildApplication);
$ch = curl_init('http://10.50.1.71:8080/SME/api/details.json');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($buildApplicationJSON))
);
$result = curl_exec($ch);
var_dump($result);
【问题讨论】:
-
$buildApplicationJSON在$data的上下文中是什么? -
更改
$data = '{"firstname": "tom", "surname" : "tom", "companyName" : "test","phone" : 01234567, "email" : "test@test.com"}'; -
使用数组 $data['firstname'] = "value"; ....
-
@A-2-A 那不是还是无效的吗?不应引用键。
-
Native json 键确实应该被引用,但大多数应用程序不需要这个。然而,AWS 就是这样一个例子,它要求键和值都被引用。