JSON 또는 ATOM + XML로 데이터를 반환하는 API (OData)와 함께 CURL을 사용하고 있습니다 (CURLOPT_HTTPHEADER 설정에서 설정할 수있는이 API의 두 가지 옵션입니다). 내 코드는 다음과 같습니다.
$url = "https://www.mywebsite.com/4.3/TableExample()?".'$filter'."=(IDNumber%20eq%20'115735')%20and%20(StatusID%20eq%202)%20and%20(AnotherID%20eq%207)%20and%20(IDDate%20ge%20datetime'2012-10-24T00:00:00')%20and%20(IDDate%20le%20datetime'2015-10-26T00:00:00')".'&$expand'."=Items";
$curlConn = curl_init($url);
curl_setopt($curlConn,CURLOPT_HTTPHEADER,array('Accept: application/atom+xml'));
//OR FOR JSON
//curl_setopt($curlConn,CURLOPT_HTTPHEADER,array('Accept: application/json'));
$ret = curl_exec($curlConn);
curl_close($curlConn);
이것은 잘 작동합니다 (사실이 코드만으로도 에코 등없이 브라우저에 응답 정보를 표시합니다).
atom + xml이 반환되면 다음과 같은 브라우저에 반환됩니다.
<!--?xml version="1.0" encoding="utf-8" standalone="yes"?-->
<html>
<head></head>
<body>
<feed xml:base="http://www.mywebsite.com/4.3/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<title type="text">TableExample</title>
<id>http://www.mywebsite.com/4.3/TableExample</id>
<updated>2014-05-30T18:37:34Z</updated>
<entry>
<!--DATA RETURNED HERE-->
</entry>
그리고 닫는 태그. 완전히 XML이 아니고 완전히 HTML이 아니기 때문에 이상합니다. 또한 구문 분석하려고 할 때 SimpleXMLElement를 사용했지만 아무것도 찾지 못했습니다. 또한 simplexml_load_string을 시도했지만 작동하지 않습니다. JSON으로 받았을 때 일반 JSON 코드처럼 보이지만 다시 HTML 태그로 래핑되어 있으므로 json_decode가 요소에서 작동하지 않는다고 가정합니다.
이 데이터를 구문 분석 할 수없는 이유가 있습니까?
요청에 CURLOPT_RETURNTRANSFER 값을 추가하여이 작업을 수행 할 수있었습니다.
curl_setopt($curlConn,CURLOPT_RETURNTRANSFER,1);
JSON 헤더로 json_decode를 사용하여 배열로 만들었습니다. 헤더에 atom + xml을 사용하여 new SimpleXMLElement ()를 사용하여 배열로 변환했습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다