所以,我正在从Java移植到Php一个简单的服务器,应该以json格式提供字符串。我不是Php程序员,但我正在学习。 问题是,我真的不明白如何向我的客户端发送一个原始的json字符串(我发誓我用谷歌搜索了几个小时才没有运气)。
我的客户端Php脚本初始化一个curl会话并以Json格式发送请求,很简单:
$command = array("command" => "ping");
$content = json_encode($command);
//Initialize curl
$curl = curl_init("http://localhost/test/server.php");
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content);
echo "Client: Tried to initialize curl<br>";
$response = curl_exec($curl);
echo "Client: reponse: " . $response . "<br>";
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
echo "Client status: " . $status . "<br>";
if ($status != 200) {
die("Client: Error: call to URL $url failed with status $status, response: $response, curl_error: " . curl_error($curl) . ", curl_errno: " . curl_errno($curl) . "<br>");
}
curl_close($curl);
echo "Response: <br>";
$json_response = json_decode($response, true);
现在,我被困在服务器端,我可以获取并解码Json请求(在这种情况下是一个名为“ping”的命令),我想发回一个原始的Json字符串,如{“command”:“乒乓“}
$data = json_decode(file_get_contents("php://input"), true);
$req = $data['command'];
switch ($req) {
case "ping":
ping();
break;
default:
echo "SERVER: unrecognized command: " . $data["command"] . "<br>";
}
function ping(){
$command = array('command' => 'pong');
print_r(json_encode($command)); // WRONG! should send back a raw json string
}
如何发回原始json字符串?另一个卷曲操作?在哪个网址?
答案 0 :(得分:0)
您应该使用echo而不是print_r,并将响应头设置为“application / json”:
function ping(){
$command = array('command' => 'pong');
header('Content-Type: application/json');
echo json_encode($command);
}