首先,这是我当前系统的样子:
- 沙发数据库 1.0.2
- PHP 5.3.6
- 阿帕奇 httpd 2.2.19
- PECL http 1.7.1
- CouchDB-Lucene 0.6.1
我正在用 CouchDB 和 CouchDB-Lucene 构建一个迷你搜索引擎。当用户输入查询时,我 POST 到我的 PHP 脚本,然后查询 couchdb-lucene。然后,Couchdb-lucene 将向 PHP 脚本返回匹配文档键的列表。然后,我将数据(使用 http_post_data)发布到带有该键列表的列表函数(详细信息在此处,在“查询选项”下)。此列表函数返回 HTML 格式的结果。这是有效的部分。
我的需求现在正在发生变化,我只想查询视图并取回 JSON。但是,当我这样做时,这是来自 http_post_data 调用的响应:
HTTP/1.1 415 Unsupported Media Type
Server: CouchDB/1.0.2 (Erlang OTP/R13B)
Date: Sat, 09 Jul 2011 22:22:51 GMT
Content-Type: text/plain;charset=utf-8
Content-Length: 78
Cache-Control: must-revalidate
{"error":"bad_content_type","reason":"Content-Type must be application/json"}
我为此视图生成的 URL 是正确的。我可以将我的 POST 调用更改为
http_post_data(url/of/view, $key_string, "Content-Type:application/json");
但实际上不会返回任何内容(我正在查看 Firebug 中的输出)。为了发回我的结果,这里是相关的 PHP:
HttpResponse::setContentType("application/json");
HttpResponse::setData($response);
$response
包含从 http_post_data 调用到 CouchDB 的响应。
有什么建议么?这已经让我发疯了一天又一点。
谢谢。