जवाबों:
जब तक आपको फ़ाइल की सामग्री से अधिक की आवश्यकता नहीं है, तब तक आप उपयोग कर सकते हैं file_get_contents
।
$xml = file_get_contents("http://www.example.com/file.xml");
कुछ अधिक जटिल के लिए, मैं CURL का उपयोग करूंगा ।
failed to open stream: HTTP request failed!
file_get_contents
आप कस्टम कुकीज़, हेडर, और अन्य चीजों के साथ अनुरोध नहीं करते हैं जो एक ब्राउज़र आमतौर पर भेजता है, इसलिए आपको वह प्रतिक्रिया नहीं मिल सकती है जिसकी आप तलाश कर रहे थे। उस स्थिति में, आप वैसे भी CURL का उपयोग करने से बेहतर होंगे। (लेकिन यह ओपी का मामला नहीं है।)
अधिक उन्नत GET / POST अनुरोधों के लिए, आप CURL लाइब्रेरी ( http://us3.php.net/curl ) स्थापित कर सकते हैं :
$ch = curl_init("REMOTE XML FILE URL GOES HERE"); // such as http://example.com/example.xml
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
file_get_contents()
। एक साधारण 4 लेटर स्ट्रिंग ने इसके साथ लगभग 10 सेकंड का समय लिया, जबकि कर्ल ने अधिक उचित ~ 1 सेकंड अधिकतम लिया।
http_get
चाल चलनी चाहिए। http_get
ओवर के फायदों में file_get_contents
HTTP हेडर देखने, अनुरोध विवरणों तक पहुंचने और कनेक्शन टाइमआउट को नियंत्रित करने की क्षमता शामिल है।
$response = http_get("http://www.example.com/file.xml");
याद रखें कि यदि आप एक प्रॉक्सी का उपयोग कर रहे हैं, तो आपको अपने php कोड में थोड़ा सा ट्रिक करने की आवश्यकता है:
(PROXY WITHOUT AUTENTICATION EXAMPLE)
<?php
$aContext = array(
'http' => array(
'proxy' => 'proxy:8080',
'request_fulluri' => true,
),
);
$cxContext = stream_context_create($aContext);
$sFile = file_get_contents("http://www.google.com", False, $cxContext);
echo $sFile;
?>
इस बात पर निर्भर करता है कि आपका php सेटअप URL पर फ़ोपेन की अनुमति देता है या नहीं, आप स्ट्रिंग में प्राप्त तर्कों (जैसे http://example.com?variable=value ) के साथ केवल url को फ़ोपेन कर सकते हैं
संपादित करें: सवाल मैं कुछ आप चर या नहीं पारित करने के लिए देख रहे हैं कि क्या नहीं कर रहा हूँ फिर से पढ़ने - अगर आप नहीं तो आप बस containg fopen अनुरोध भेज सकते हैं कर रहे हैं http://example.com/filename.xml - के लिए स्वतंत्र महसूस चर = मान भाग को अनदेखा करना
मुझे इसके लिए फॉक्सोपेन ओपन का उपयोग करना पसंद है।
दूसरी ओर, PHP में अन्य सर्वर के REST एपीआई का उपयोग करना बहुत लोकप्रिय है। मान लीजिए कि आप कुछ HTTP रिक्वेस्ट को दूसरे सर्वर में रीडायरेक्ट करने का तरीका ढूंढ रहे हैं (उदाहरण के लिए xml फ़ाइल प्राप्त करना)। यहाँ एक PHP पैकेज आपकी मदद करने के लिए है:
https://github.com/romanpitak/PHP-REST-Client
तो, xml फ़ाइल प्राप्त करना:
$client = new Client('http://example.com');
$request = $client->newRequest('/filename.xml');
$response = $request->getResponse();
echo $response->getParsedResponse();
Guzzle एक बहुत अच्छी तरह से ज्ञात पुस्तकालय है जो HTTP कॉल के सभी प्रकारों को करना बहुत आसान बनाता है। Https://github.com/guzzle/guzzle देखें । साथ स्थापित करें composer require guzzlehttp/guzzle
और चलाएं composer install
। अब http कोड कॉल के लिए नीचे दिया गया कोड पर्याप्त है।
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com/path/to/resource');
echo $response->getStatusCode();
echo $response->getBody();