PHP の CURL を使用してサーバーに GET リクエストを送信しようとしていますが、これを行うのにいくつか問題があります。PHP 経由でリクエストを行うと、外部サーバーから 500 エラーが返されます。ただし、bash curl を使用してリクエストを行うか、ブラウザーで URL にアクセスすると、成功します。
PHP を必要最小限にまで削ぎ落としました。
$url = 'http://example.com:8080/path/to/service?cmd=my_command&arg=example2.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
print_r(curl_getinfo($ch));
curl_close($ch);
述べたように、これは example.com から 500 エラーを返します。ただし、次のようにすると:
[me@host ~] curl "http://example.com:8080/path/to/service?cmd=my_command&arg=example2.com"
期待どおりの XML ドキュメントが返されました。
何を与える?$url
varを削除してhttp://example.com:8080
、PHP CURL リクエストが 200 で応答するようになったかのように、URL のエンコーディングを使用する必要があります。、そこの URL で有効です)。GET wierd results を使用して php curl send vars の答えが示唆することを試してみましたが、それも役に立ちませんでした。&
%26
&
ここで何が欠けていますか?それはとてつもなく単純なことだと確信していますが、それは私を逃れています。
ありがとう!
編集:私はPythonでこれをやろうとしました - 何が起こったのかを見るために - そしてそれはそこでうまくいきます:
import urllib2
r = urllib2.urlopen(theURL)
r.read()