0

我正在为 rest API 使用 yii 扩展。但我无法在标题信息中设置内容类型。

使用这个 YII 扩展

请提供解决方案?

我的 REST 文件 test.php 代码:

<?php 
echo "In rest api";
print_r($_SERVER);
?>

我从 Yii CURL 调用它:

echo $output = Yii::app()->curl->setOption(CURLOPT_HTTPHEADER, array('CONTENT_TYPE:   application/json'))
->post("localhost/test.php");

我得到以下输出:

HTTP/1.1 100 继续

HTTP/1.1 200 OK
Date: Wed, 13 Nov 2013 18:14:10 GMT
Server: Apache/2.2.21 (Win32) PHP/5.3.8
X-Powered-By: PHP/5.3.8
Content-Length: 311
Content-Type: text/html


In rest apiArray
(
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:5.0) Gecko/20110619   Firefox/5.0
[HTTP_HOST] => localhost
[HTTP_ACCEPT] => */*
[CONTENT_LENGTH] => 143
[HTTP_EXPECT] => 100-continue
[CONTENT_TYPE] => multipart/form-data; boundary=----------------------------f0f331e79d34
[PATH] => C:\Windows\system32;C:\Windows;C:\Windows\system32\Wbem;C:\Program Files\Dell\DW WLAN Card;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;C:\Program Files (x86)\cvsnt;
[SystemRoot] => C:\Windows
[COMSPEC] => C:\Windows\system32\cmd.exe
[PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
[WINDIR] => C:\Windows
[SERVER_SIGNATURE] => 
[SERVER_SOFTWARE] => Apache/2.2.21 (Win32) PHP/5.3.8
[SERVER_NAME] => localhost
[SERVER_ADDR] => 127.0.0.1
[SERVER_PORT] => 80
[REMOTE_ADDR] => 127.0.0.1
[DOCUMENT_ROOT] => C:/wamp/www/
[SERVER_ADMIN] => admin@localhost
[SCRIPT_FILENAME] => C:/wamp/www/testforget.php
[REMOTE_PORT] => 1287
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => POST
[QUERY_STRING] => 
[REQUEST_URI] => /testforget.php
[SCRIPT_NAME] => /testforget.php
[PHP_SELF] => /testforget.php
[REQUEST_TIME] => 1384365808

)

我有

[CONTENT_TYPE] => multipart/form-data;

为什么我得到了 content_type 这个,但它应该得到 [CONTENT_TYPE] => application/json,因为我在我的请求中设置了它?

4

2 回答 2

0

尝试:

Yii::app()->curl
             ->setOption(CURLOPT_HTTPHEADER, array('Content-type: application/json'))
             ->post("localhost/testforget.php",$data);
于 2013-11-13T16:18:12.230 回答
0

查看我发现的文档CURLOPT_HTTPHEADER, withContent-type:...选项应用于您的请求,但未应用于服务器响应。要更改服务器响应标头,请在您的test.php文件中添加下一行

header('Content-type: application/json');

在回显任何数据之前。并使用json_encode()数据,你会回声。

于 2013-11-13T21:56:10.397 回答