2017-10-02 2 views
0

편집 : 이제는 HTML 양식을 사용하여 POST를 통해 데이터를 제출했는데 이것이 완벽하게 작동하므로 cURL 오류는 대단히 감사합니다! 이상하게 보입니다. 어제 밤에 작동했지만 지금은 오늘 밤이 아닙니다 ...cURL이 더 이상 작동하지 않습니다.

o 어젯밤에 첫 번째 cURL 기능을 사용할 수있었습니다. 웬일인지 (그리고 내가 알고있는 변경없이) 그것은 현재 작동하지 않습니다.

내 코드는 다음과 같습니다

<?php 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL,"http://www.example.com/api"); 
    curl_setopt($curl, CURLOPT_POST, 1); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, "apiKey=var1&message=var2&to=var3&from=var4"); 

    curl_exec ($curl); 
    curl_close ($curl); 

?> 

는 지금은 PHP 로그에서 에러가 발생하지 않고 나는 어떤 명백한 구문 오류를 볼 수 없습니다. 나는 Im '을 사용하여 v7을 사용하고 cURL이 설치되었는지 확인했습니다 (정확한 기술 용어 인 경우). API 주소에 액세스 할 때 POST 데이터가이 함수를 사용하지 않고 인증 오류를 발생시키지 않으면 최소한 빈 페이지 만 가져올 것으로 예상됩니다.

이것은 내가 cURL 자체가 데이터를 게시하는 것이 아니라 어떻게 든 무시한다는 것을 알게합니다. cURL 뒤에 헤더를 넣으면 코드에서 치명적인 오류가 발생하지 않으므로 헤더를 따르십시오.

+0

이 인증 오류가 아마,'200'의 HTTP 상태가 있습니까 :

은 또한 훨씬 더 강력한 수정에 대해 설명합니다 여기에 답을 찾았나요? 'CURLOPT_RETURNTRANSFER'를 켜고'curl_exec'의 반환 값을 버리려고 했습니까? – ceejayoz

+0

내 말은 apiKey 변수를 사용하지 않고 수동으로 페이지로 이동하기 때문에 자연스럽게 인증 오류가 발생하기 때문입니다. 이 오류는 cURL에서 반환되지 않으므로 문제가 아님을 알고 있습니다. 데이터 자체가 전송되지 않습니다. 나는 CURLOPT_RETURNTRANSFER를 켜는 방법을 알고 있음을 인정해야한다. – Rockhopper

답변

-1

따라서 HTTP에 대한 요청을 수락하지 않고 HTTPS가되어야하는 API가있는 공급자가 나옵니다.

데이터가 민감하지 않지만 내 마음에 짊어지기 때문에 보안상의 관점에서 최적이 아닌 것을 추가하기는하지만이 코드 줄을 추가하는 것입니다.

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 

컬 기능을 시작할 때.

http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

+0

downvote에 대한 이유가 무엇입니까? 이렇게하면 문제가 해결되고 소스가 제공됩니다. 새 사용자에 대한 설명이 특히 좋음 – Rockhopper

+1

아마도 잘못된 것입니다. 공급자가 기본 인증서 번들 제공을 중단했을 가능성이 큽니다. 그래서 지금 너는 너 자신에게 1을 주어야한다 (https://curl.haxx.se/docs/caextract.html을 보시오). 당신은 후자를 선택했습니다. – hanshenrik

+0

감사합니다 @hanshenrik 설명 주셔서 감사합니다 :) – Rockhopper

0

죄송 합니다만 분명히 지적하지 않으려면 컬 오류를 확인 했습니까?

$err = curl_errno($curl); 
$errmsg = curl_error($curl); 
$info = curl_getinfo($curl); 
+0

사과하지 말라. 나는 이것에 대해 아주 새로운 것이다. 그냥 이것을 시도하고 당신이 제공 한 여전히 공백 모든 변수를 울렸다 – Rockhopper

+0

아, 죄송합니다 실제로 이것을 얻습니다 : "0array" – Rockhopper

+0

@Rockhopper는 디버깅에 echo를 사용하지 않고'var_dump'를 사용합니다. echo는 문자열 (" "), NULL, bool (false),이 3 개는 모두 echo와 동일하며 string ("1 "), int (1) 및 bool (true)을 구별 할 수 없습니다. ... 몇 가지 다른 좋은 이유가 있습니다. ** 디버깅을 위해 var_dump를 사용하십시오. ** – hanshenrik

관련 문제