다음 json 문자열 http://pastebin.com/wnkiLqvP이 있는데 베타 페이스 API에 게시하려고합니다. 포스트는 cURL을 통해 PHP로 수행되며 포스트를 수행하는 기능은 다음과 같습니다 또한json 문자열이있는 API로 요청을 보내는 중 오류가 발생했습니다.
function bcall_endpoint($endpoint,$json_params){
//Init CURL
$ch = curl_init($endpoint);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_params);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
$result = curl_exec($ch);
return $result;
}
, 다음 코드 조각에 의해 생성되는 페이스트 빈 파일의 JSON 문자열 :
$beta = array(
'api_key'=>'d45fd466-51e2-4701-8da8-04351c872236',
'api_secret'=>'171e8465-f548-401d-b63b-caf0dc28df5f',
'imagefile_data'=>$base64,
'detection_flags'=>'cropface,recognition,propoints,classifiers,extended'
);
$beta = json_encode($beta);
$ base64는 파일의 base64 문자열입니다.
$file = file_get_contents($_FILES['file']['tmp_name']);
$base64 = base64_encode($file);
이 API 엔드 포인트는 여기 http://www.betafaceapi.com/service_json.svc/UploadNewImage_File 이상이며, API의 버전은 JSON와 함께 작동 : 다음과 같은 base64로 문자열을 만들었습니다. 끝점으로 모든 것을 보내려고하면 응답을 받아야합니다. 응답보다 Rathar, 나는 실제로 모든 PARAMS와 컬 게시물을 수행 한 후 다음을 얻을 :
HEADERS
Access-Control-Allow-Origin: *
Cache-Control: private
Content-Length: 1110
Content-Type: text/html
Date: Wed, 22 Jan 2014 07:55:32 GMT
Server: Microsoft-IIS/7.5
X-Aspnet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By-Plesk: PleskWin
BODY view raw
<html version="-//W3C//DTD XHTML 2.0//EN" xml:lang="en" xsi:schemaLocation="http://www.w3.org/1999/xhtml http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<HEAD>
<TITLE>Request Error</TITLE>
</HEAD>
<BODY>
<DIV id="content">
<P class="heading1">
<B>Error Status Code:</B> 'InternalServerError'
</P>
<P>
<B>Details: </B>There was an error deserializing the object of type BetafaceWebService.ImageRequestBinary. End element 'imagefile_data' from namespace '' expected. Found text '/'.
</P>
<!-- Padding xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-->
</DIV>
</BODY>
</html>
나는이 오류가 왜 누군가가 나에게 지적시겠습니까 : 형 BetafaceWebService의 객체를 직렬화 복원하는 중 오류가 발생했습니다 .ImageRequestBinary. 끝 요소 'imagefile_data'이 (가) 예상되는 네임 스페이스입니다. '/'텍스트를 찾았습니다. ?
파일을 업로드하고 API 끝점에서 POST를 실행하면 PHP 응답이 NULL 인 것으로 보입니다. 그러나 페이지의 소스를보고 다시 새로 고침을 누른 다음 양식 제출을 다시 보내면 API에서 프로퍼 응답을받습니다.
누군가가 나에게 무슨 문제가 있는지 알려 줄 수 있습니까? 나는 이것을 어제부터 이해하려고 애를 먹었고 해결책을 찾지 못했습니다.
UPDATE : PHP 나 나는 다음과 같은 결과를 얻을 수를 생성하는 JSON 문자열로 jsonlint을 사용한 후 :
Parse error on line 4:
... "imagefile_data": "\/9j\/4AAQSkZJRgABA
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['
JSON 문자열에 대한 크기에 어떤 제한이 있습니까?
API 보안을 숨겨야합니다. – user658991
그것은 공개 비밀 :) 그게 문제가 아니에요. 하지만 당신의 의도에 대한 감사합니다 – roshkattu