Во-первых, вот как выглядит моя текущая система:
- CouchDB 1.0.2
- PHP 5.3.6
- Apache 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) в функцию List с этим списком ключей ( подробно здесь , в разделе «Параметры запроса»). Эта функция списка возвращает результаты в формате 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.
Есть предложения? Это сводило меня с ума на один день и немного.
Спасибо.