あなたのコードは正しいですが、PHP curlを使用しているときにWikipediaがデータを返信しないようです(ヘッダーやその他のパラメータを設定する必要があるかもしれません)。あなたが必要とするすべてはしかし、いくつかのデータを取得する場合
、あなたは単に罰金働くfile_get_contents
を使用することができます。
は
$output = file_get_contents("http://fr.wikipedia.org/w/api.php?action=query&titles=Albert%20Einstein&prop=info&format=json");
echo $output;
編集:
は情報だけのために、私は問題が何であるかを発見しました。そのURLにcurl -v
を実行する場合は、次のように起動します:
* Trying 91.198.174.192...
* Connected to fr.wikipedia.org (91.198.174.192) port 80 (#0)
> GET /w/api.php?action=query&titles=Albert%20Einstein&prop=info&format=json HTTP/1.1
> Host: fr.wikipedia.org
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Wed, 17 May 2017 13:54:31 GMT
< Server: Varnish
< X-Varnish: 852298595
< X-Cache: cp3031 int
< X-Cache-Status: int
< Set-Cookie: WMF-Last-Access=17-May-2017;Path=/;HttpOnly;secure;Expires=Sun, 18 Jun 2017 12:00:00 GMT
< Set-Cookie: WMF-Last-Access-Global=17-May-2017;Path=/;Domain=.wikipedia.org;HttpOnly;secure;Expires=Sun, 18 Jun 2017 12:00:00 GMT
< X-Client-IP: 86.214.172.57
< Location: https://fr.wikipedia.org/w/api.php?action=query&titles=Albert%20Einstein&prop=info&format=json
< Content-Length: 0
< Connection: keep-alive
<
* Connection #0 to host fr.wikipedia.org left intact
だから何が起こっているhttps://fr.wikipedia.org/w/api.php?action=query&titles=Albert%20Einstein&prop=info&format=json
を要求することにより、それが直接操作する必要がありますので、実際の内容は、HTTPSのURL、httpではなく上にあるということです。
file_get_contents
で動作する理由は、この場合リダイレクトが自動的に行われるためです。
httpsを使用すると、「SSL証明書の問題:ローカル発行者証明書を取得できません」というエラーが表示されるので、今はfile_get_contentsを使用します。ありがとうございました:) –