2012-10-04 4 views
0

JSON 호출 라이브러리를 만들려고합니다. 그것은 다음과 같은 특징을 가지고 있습니다.PHP에서 JSON 호출을 호출하는 일반적인 방법은 무엇입니까?

  • 하면
  • 응답을 파싱하고 JSON 개체로 리턴 (형태 부호화 (a=1&b=2&c=3) 및 JSON 데이터 청크를 포함)
  • 가 서버에 데이터를 게시 할 수있는 헤더를 정의 할 수

다른 질문을 검색 한 결과 두 가지 답변 만있는 것으로 나타났습니다.

  • file_get_contents()을 사용하십시오. 이 방법은 매우 간단하고 사용하기 쉽습니다. 그러나 내용을 얻는 것 이상을 할 수는 없습니다. 헤더를 추가 할 수 없으며 POST를 사용할 수 없습니다. 그러나 일반적으로 모든 서버에서 지원됩니다.
  • 컬 사용. 이 방법은 강력 해 보이며 거의 모든 것을 할 수 있습니다. 단점은 서버에 libcurl 및 php-curl 지원을 설치해야한다는 것입니다. 즉, 컬이 설치되지 않은 서버에서는 사용할 수 없습니다.

따라서 대부분의 서버에서 사용할 수있는 공용 라이브러리를 개발하려는 경우 curl을 선택하는 것이 좋습니다.

다른 방법이 있습니까? 사용하기 쉽고 강력하고 신뢰성 - 짧은 한마디로


, 나는 파이썬 urllib2의 PHP 버전을 찾고 있어요.

+0

에서 네트워크 기능 섹션을 볼 수 있습니다. 좋은 선택입니다. 매우 광범위하게 설치되며 관리되는 시스템이나 호스트 된 시스템의 선택적 설치로 사용할 수 있습니다. –

+0

마이클에게 감사드립니다. 나는 나의 호스팅 공급자가 내 가상 서버에 컬을 설치하지 않았다는 것을 알았을 때 그 아픈 날들을 아직도 기억한다. 그래서 컬이 널리 설치되어 있는지 잘 모르겠습니다 ... – charlee

+0

당신은'file_get_contents'에 헤더를 추가 할 수 있지만, cURL을 사용하면 더 많은 정보를 얻을 수 있습니다 : http://stackoverflow.com/questions/2107759/php -file-get-contents-and-headers – MacMac

답변

1

두 가지 옵션 (curlHTTP stream context options)이 있습니다. 둘 다 당신이 묘사 한 것을 성취 할 수 있습니다. curl은 어디에서나 설치 될 수 있지만 스트림 컨텍스트는 핵심 기능이며 항상 사용할 수 있습니다.

sockets을 사용하여 라이브러리를 구현할 수도 있습니다. 더 많은 작업을 수행 할 수 있지만 요구 사항이 더 이상 할 필요가없는 경우 더 잘 제어 할 수 있습니다.

+0

소켓을 사용하지 않는 것이 좋습니다. 아주 마지막 수단을 제외하고는 HTTP 프로토콜 (예 : 청크 분할 인코딩, 리다이렉션)에 대해 많은 세부 정보가 있으므로 바퀴를 많이 재발 명해야합니다. – Barmar

-1

필자가 알다시피 curl은 기본적으로 4.0.2 PHP 버전을 지원하므로 대부분의 서버에 포함되어 있습니다. 또한 네이티브 PHP 함수 header이 있습니다.이 매크로는 ->header('location: index.php'), header('cache-control: ok') 등을 사용하여 응답 헤더를 사용자 정의합니다. php.net

+0

감사합니다. 말리는 것이 좋은 선택 인 것 같습니다. 'header()'는 다른 서버에서 내용을 가져오고 싶지만 다른 사람에게 내용을 제공하지 않기 때문에 나에게는 아무런 의미가 없습니다. – charlee

관련 문제