2

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 ドキュメントが返されました。

何を与える?$urlvarを削除して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()
4

1 に答える 1