• 05-09-2012, 15:30:23
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Merhaba. Bir dosya paylaşım sitesinin apilerini kullanmaya çalışıyorum.

    Normalde SSL olmayan, yönlendirmesi olmayan bir siteye şu kodlarla bağlanıp veri alabiliyorum.

    $ch = curl_init();
    		curl_setopt($ch, CURLOPT_URL, $url);
    		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    		$result = curl_exec($ch);
    		curl_close($ch);
    		
    		return $result;
    Ancak bu dosya paylaşım sitesinin api URL'leri https destekliyor. Talepleri https olarak göndermem gerekiyor. Örneğin URL şöyle;

    https:// dosyauploadsitesi.com/api/ get_access_token.php?email=EMAIL&password=PASSWORD &appid=APPID&signature=SIGNATURE&output_format=JSO N

    Gerekli verileri yerine yazıp herhangi bir tarayıcıdan direkt olarak bu URL'ye girdiğim zaman sorunsuz olarak access_token dönüyor.

    Ancak CURL ile bunu yapmaya çalıştığım zaman boş bir sayfayla karşılaşıyorum.

    VERIFYPEER ve USERAGENT denedim olmadı. Acaba sorun ned olabilir? Bomboş bir sayfa geliyor.
  • 05-09-2012, 17:09:07
    #2
    	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    bunları dener misin birde, sıfırla olmazsa 1 yap dene birde
  • 05-09-2012, 20:16:27
    #3
    mertdinler adlı üyeden alıntı: mesajı görüntüle
    	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    bunları dener misin birde, sıfırla olmazsa 1 yap dene birde
    Yaklaşık 1 aydır bu sorunun çözümünü arıyordum. Söylediklerin de denedim.

    Sorun olarak şöyle bir hata geliyordu.

    Unknown SSL protocol error in connection to www.site.com:443

    Neyi denediysem bunu çözemedim. Hatta sorunun karşı siteden kaynaklandığını düşündüğüm için site sahiplerine de mail attım 1 aydır yazışıyoruz adamlarla. Onlar da şunu yapın şunu yapın dediler, yok olmadı. En sonunda biraz önce karşılaştığım şu sayfa sayesinde çözümü buldum.

    http://www.jakehilton.com/?q=node/66

    Evet Curl ile SSL https sayfalara bağlanıp veri almak için verifypeer kullanıyoruz. Ama unuttuğumuz hiç aklımıza gelmeyen birşey var. Curl varsayılan olarak SSLv2 protokolünü kullanıyor. Benim veri alışverişi yapmak istediğim site ise SSLv3 kullanıyormuş. Bunu deneyerek öğrendim. CUrl'a setopt ile yeni bir opsiyon ekledim.

    curl_setopt($ch, CURLOPT_SSLVERSION, 3);
    Senin kodlarla bileşince sorun çözüldü