2014-09-30 2 views
0

저는 salesforce "api"에 대한 게시물 요청을하려고합니다.PHP 컬 헤더 세트가 현재 설정되었습니다

curl_setopt_array($ch, array(
       CURLOPT_URL => 'https://www.salesforce.com/servlet/servlet.WebToLead', 
       CURLOPT_RETURNTRANSFER => 1, 
       CURLOPT_POST => 3, 
       CURLOPT_POSTFIELDS => json_encode(array (
         'first_name' => 'foo', 
         'last_name' => 'faa', 
         'email' => '[email protected]', 
         'oid' => '#hash', 
         'recordType' => '#hash' 
       )), 
       CURLOPT_HTTPHEADER=>array(
         'Content-type: application/x-www-form-urlencoded' 
       ) 
     )); 

     $data = curl_exec($ch); 
     $info = curl_getinfo($ch); 

응답 헤더의 내용 유형은 항상 : 내가 사용 보내기 "text/html;charset=UTF-8"

같은 매개 변수 그것이 내가이 작업을 수행 할 때 명시 적으로 "application/x-www-form-urlencoded"

로 설정되어있는 경우에만 콘텐츠 형식을 허용하지만 우체부 (정확한 헤더 포함)가 실제로 작동합니다.

+0

위의 코드를 사용하여 salesforce API에서 응답을받지 못하는 것이 문제가됩니까? 오류 응답을 받고 있습니까? 사용중인 Salesforce 문서에 대한 링크를 제공 할 수 있습니까? – thohl

+0

nope. 피드백을 제공하지 않는 끔찍한 API입니다. 내 요청이 salesforce -> leads로 이동하여 실제로 성공했는지 확인합니다. 문제가 Content-type 헤더라는 것이 확실합니다. 우편 배달부를 통해 Salesforce에 성공적으로 게시 할 수 있습니다. 우편 발송자에서 콘텐츠 유형을 변경하면 해당 우편물도 실패합니다. –

답변

1

CURLOPT_POSTtrue 일 때 컬은 에 대한 요청의 Content-Type을 자동으로 설정합니다. 당신은 수동으로 할 필요가 없습니다. 요청 전에 CURLINFO_HEADER_OUTtrue으로 설정하고 그 다음에 배열이 curl_getinfo() 인 지 확인하여 확인하고 다른 모든 "나가는"헤더를 확인할 수 있습니다.

문제가 요청 헤더와 관련이 없지만 컬이 https를 처리하는 방법과 관련이 있다고 생각됩니다. curl_setopt_array()에 다음과 같이 설정하면 도움이됩니다.

CURLOPT_SSL_VERIFYPEER => false, 
CURLOPT_SSL_VERIFYHOST => 2, 
+0

이 변경 후의 내 요청입니다 : curl_setopt_array ($ ch를, 배열 ( \t CURLOPT_URL는 => 'https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8', \t CURLOPT_POST = > 진정한 \t CURLOPT_RETURNTRANSFER => 진정한 \t CURLOPT_POSTFIELDS =>로 json_encode ($ 필드) \t CURLOPT_SSL_VERIFYPEER => 거짓 \t CURLOPT_SSL_VERIFYHOST => 2)); 여기서 $ fields는 배열입니다. 하지만 여전히 명확 curl_getinfo의 출력을 보여줍니다 콘텐츠 _ : "text/html과; 문자셋 = UTF-8" –

+0

당신은 비록 헤더에 대한 맞다 : 요청 헤더 문자열이 참 - request_header : "POST/서블릿/servlet.WebToLead? encoding = UTF-8 HTTP/1.1 ↵ 호스트 : www.salesforce.com ↵ Accept : */* ↵ 내용 길이 : 235 ↵ 내용 유형 : application/x-www-form-urlencoded –

+0

정답으로 표시하겠습니다. 혼란 스러울지라도 헤더 문제에 대한 답변입니다 :) –