POST sonra URL'sini değiştirme cURL

4 Cevap php

Ben cURL kullanarak bir HTTP POST yapıyorum

$url = "http://localhost:8080/~demo/cgi-bin/execute/100";

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($data));
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);

//execute post
$result = curl_exec($ch);
echo("$result");
//close connection
curl_close($ch);

Sonrası idam alır, ancak yanıt hata ile gösterilmiştir:

The requested URL /~demo/100 was not found on this server.


(Nedense) cURL URL değişti çünkü yukarıdaki URL, açıkçası, sunucu değil yok.

Bu olmalıydı /~demo/cgi-bin/execute/100. Bu URL tarayıcıda çalışır.

Please tell me why does it do that? AND how can i stop this, for what I want?

4 Cevap

  • Fiddler yükleyin.
  • Ayıklamayı etkinleştirin.
  • Tarayıcıda sitesini ziyaret edin.
  • Php cURL kod yürütebilir.

Fiddler web sunucusu alma ve gönderme size tam olarak ne söyleyecektir. Eğer yerel olarak çalışan beri, php de gönderiyor tam olarak ne görebilirsiniz. Ikisini karşılaştırmak ve size sorunu söyleyecektir.

Belki cURL varsayılan http portu 80 erişmeye çalıştığında? Kullanmayı deneyin

curl_setopt($ch, CURLOPT_PORT, 8080)

Bu web sunucusu farklı bir yerde işaret ederek, cURL bir yönlendirme başlığı gönderdiğini yerine bu, URL'yi değişmekte olduğunu cURL olmayabilir. Belki şu yardımcı olacaktır:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);

nerede?

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);