0

リンクアルファ API に POST しようとしています。無数の方法を試しましたが、投稿に関してはサーバーからの応答さえありません。

これが私がセットアップした開発ページです。コンテンツのマルチパート応答は奇妙に見えます。私が書いたコード (API は非表示になっています) は以下のとおりです。私がやろうとすることは何もうまくいきません:( :

<html>
<head></head>
<body>
<?php
$link = 'http://api.linksalpha.com/ext/post';

$data = array(
    'api_key' => 'xxxxxxxxxxxxxx',
    'post_id' => '434345',
    'post_link' => 'www.google.com',
    'post_title' => 'test title',
    'post_content' => 'test msg'
);

function networkpub_http_post($link, $body) {

    $url = $link;
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_VERBOSE, true);
    curl_setopt($ch, CURLINFO_HEADER_OUT, true);

    $response = curl_exec($ch);

    function dbg_curl_data($ch, $data=null) {
      static $buffer = '';

      if ( is_null($ch) ) {
        $r = $buffer;
        $buffer = '';
        return $r;
      }
      else {
        $buffer .= $data;
        return strlen($data);
      }
    }

    echo '<fieldset><legend>request headers</legend>
      <pre>', htmlspecialchars(curl_getinfo($ch, CURLINFO_HEADER_OUT)), '</pre>
    </fieldset>';

    echo '<fieldset><legend>response</legend>
      <pre>', htmlspecialchars(dbg_curl_data(null)), '</pre>
    </fieldset>';



    curl_close($ch);

    return $response;

}


    $response_full = networkpub_http_post($link, $data);

    echo($response_full);
?>
</body>
</html>
4

1 に答える 1

1

合格CURLOPT_POSTFIELDS with arrayした場合はカウントされmultipart/form-dataますが、cURLを介してデータを投稿するには必要ですapplication/x-www-form-urlencoded version

したがって、関数を開始する前に次のように入力してください

$body = http_build_query($body);
于 2012-10-13T19:15:35.287 に答える