web-dev-qa-db-ja.com

HTTP APIを使用してXML要求を投稿する

私は、投稿の本文にXML文字列を期待するAPIを使って作業しようとしています。さらに、APIのドキュメントには以下のものが指定されています。

投稿の本文にXMLを付けてmime-type text/xmlで投稿してください

これを機能させるためにWordPress HTTP APIを使用したいのですが、いくつか問題があります。これまでのところ、失敗しているように思われる次のようなコードがあります。

$url = 'https://www.testurl.com';
$xml = <<<TESTED XML HERE>>>;
$response = wp_remote_post( 
    $url, 
    array(
        'method' => 'POST',
        'timeout' => 45,
        'redirection' => 5,
        'httpversion' => '1.0',
        'headers' => array(
            'mime-type' => 'text/xml'
        ),
        'body' => array('xml' => $xml),
        'sslverify' => false
    )
);

私の質問は、私はMIMEタイプを適切に設定しているか、そしてXMLを正しい場所に送信しているか、ということです。

XMLリクエストを利用するWordPress HTTP APIの例を見つけるのは驚くほど大変です。

2
tollmanz

私はそれを考え出した。 WordPress HTTP APIがその仕事をしていました。私の問題は私が働いていたAPIにありました。私は自分のコードを以下のように修正しました。

$url = 'https://www.testurl.com';
$xml = <<<TESTED XML HERE>>>;
$response = wp_remote_post( 
    $url, 
    array(
        'method' => 'POST',
        'timeout' => 45,
        'redirection' => 5,
        'httpversion' => '1.0',
        'headers' => array(
            'Content-Type' => 'text/xml'
        ),
        'body' => array('postdata' => $xml, 'postfield' => 'value'),
        'sslverify' => false
    )
);

繰り返しますが、これは私が作業していたAPIの単なる誤解であり、私のWordPressが提供していたHTTP APIではありませんでした。

編集:POSTデータは http://codex.wordpress.org/Function_API/wp_remote_post に従って配列として指定する必要があります。配列は次のような文字列に変換されます。これ:key1 = val1&key2 = val2&...

4
tollmanz