2012-03-22 4 views
3

나는 PHP 문서, API 문서 및 stackoverflow에 대한 다른 게시물을 활용하여 문제를 해결하는 데 몇 시간을 보냈으며 마침내 도움을 요청하고 있습니다. 나는 새로운 pbSmartConnections API를 이용한 인터페이스 쓰기를 시도하고CURL 헤더 문제를 이용한 REST-ful 연결

: 그, 그래서 내가는 fsockopen와 컬 모두 문제를 가지고있다 API Documentation

그러나 나는 컬을 활용하는 과정에서 더 얻을 수있을 것 같다 내가 여기서 제시하는 것. 문제는 다음과 같습니다.

문서를 잘 이해하면 헤더의 일부로 ApiKey를 전달해야합니다. (

{ 
    "ErrorCode": 10, 
    "Message": "Unauthorized" 
} 

내가 SO 회원이 아래에있는 내 코드에서 뭔가를 볼 수있는 동료를 바라고 있어요하십시오 : 나는이 작업을 수행 할 때 관계없이 나는 코드를 구성하려 한 여러 가지 방법으로, 나는 항상 다음과 같은 응답을 수신 그것은 거기에 가치의 아무것도 계정에 연결된 아래의 API 키가 유효하므로

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://rest.pbsyscontrol.com/v1/Ping"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type"=>"application/json", "Accept"=>"application/json", "ApiKey"=>"41460b3f-8f35-4878-b78d-49ca7f29c071")); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPGET, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
$response = curl_exec($ch); 
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
?> 
) 당신의 테스트에서 사용 주시기 :.! (참고 :)도, 어떤 비판 및/또는 제안을

궁금하신 점이 있으시면 머리글의 일부로 사용하고 싶습니다. URL의 일부로도 전달하려고했습니다.

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://rest.pbsyscontrol.com/v1/Ping?ApiKey=41460b3f-8f35-4878-b78d-49ca7f29c071"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type"=>"application/json", "Accept"=>"application/json", "ApiKey"=>"41460b3f-8f35-4878-b78d-49ca7f29c071")); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_HTTPGET, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
$response = curl_exec($ch); 
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
?> 
+0

API 키 또는 계정에 이상이 있어야합니다. 쿼리 문자열로 전달할 때도 401 ("Unauthorized : API 키가 없거나 잘못되었습니다")가 반환됩니다. API 키가 정확하다는 것을 알고 있지만 귀하의 계정은 유효하고 활성입니까? –

+0

@ Mahdi.Montgomery - 감사합니다. 그리고 네, 저는 긍정적입니다. 나는 그 것들을 여러 번 점검했는데 그것은 조금 우스꽝 스럽다. 새로운 API 키를 만들고 사용하는 등 지금까지 Pitney Bowes에게 요청을 제출했으며 응답을 기다리고 있습니다. –

+0

커맨드 라인에서'curl'을 사용하여 작업하도록하십시오. 현재 'curl -k -H'ApiKey : 41460b3f-8f35-4878-b78d-49ca7f29c071 '-i https://rest.pbsyscontrol.com/v1/Ping 명령에 대해'HTTP/1.1 401 잘못된 API 키'를 반환합니다. ' – jfs

답변

2

나는 마지막으로 다시 지원에서 듣고 그들이 지적하는 것은 API 문서의

의 URL 자신의 STAGING했다 (이 때, 그들의 API Documentation의 URL이 있지만) 내가 잘못된 URL을 사용하고 있었다이었다 , 아닙니다 생산. 놀랍게도 무엇이 URL을 정확한 답장으로 바꾸 었는지 (rest.api.pbsmartconnections.com) 연결에 사용됩니다. 그 하나의 변화와 모든 것이 제대로 작동하기 시작했습니다.

감사합니다. 헤더를 설정하는 방법에 대한 권장 사항은 @mvdnes에게 감사드립니다.

2

PHP의 문서는 말한다 :

HTTP 헤더 필드의 배열 형식 array('Content-type: text/plain', 'Content-length: 100')

당신은 따라서 대신 원래의 다음 줄을 사용하고자에서 설정할 수 :

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Accept: application/json", "ApiKey: 41460b3f-8f35-4878-b78d-49ca7f29c071")); 

그러나 이것은 ApiKey prob ably는 유효하지 않습니다.

관련 문제