Сделать запрос POST - PullRequest
       6

Сделать запрос POST

2 голосов
/ 10 октября 2010

Я хотел бы знать, как сделать HTTP-запрос POST, как описано здесь http://code.google.com/apis/documents/docs/3.0/developers_guide_protocol.html#UploadingMetadata (Создание пустого документа) Мой код выглядит так:

<?php

$headers = array(
    "POST /feeds/default/private/full HTTP/1.1",
    "Host: docs.google.com",
    "GData-Version: 3.0",
    "Content-Length: 287",
    "Content-Type: application/atom+xml"
);

$data = "<?xml version='1.0' encoding='UTF-8'?>";
$data .= "<entry xmlns='http://www.w3.org/2005/Atom'>";
$data .= "<category scheme='http://schemas.google.com/g/2005#kind'";
$data .= "term='http://schemas.google.com/docs/2007#document'/>";
$data .= "<title>new document</title>";
$data .= "</entry>";

$ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, "http://google.com/docs/feeds/default/private/full");
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, true);

$result = curl_exec($ch);

print_r($result);

?>

Что там не так? Я правильно делаю запрос?

Ответы [ 2 ]

3 голосов
/ 10 октября 2010
$data = "<?xml version='1.0' encoding='UTF-8'?>";

Заменить на:

$data = "<"."?xml version='1.0' encoding='UTF-8'?".">";

И ...

$data .= "term='http://schemas.google.com/docs/2007#document'/>";

С:

$data .= " term='http://schemas.google.com/docs/2007#document'/>";

Ох и наконец, выне должен быть print_r результат;print_r для массивов и объектов, а не для строк (curl_exec возвращает строку или null / false), вместо этого используйте var_dump($result);

0 голосов
/ 11 октября 2010

Далее, ваши пользовательские заголовки выглядят странно:

POST вообще не заголовок, так что это неправильно.

Хост: добавляется самим curl, устанавливать это не имеет смысла.

Content-Length: выполняется самим curl, в большинстве случаев вы рискуете запутать curl, если ошибаетесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...