पोस्ट अनुरोध

इस दस्तावेज़ में बताया गया है कि एचटीटीपी पीओएसटी का इस्तेमाल करके, इमेज का अनुरोध क्यों और कैसे करें.

खास जानकारी

अगर आपको इमेज के लिए कोड में अनुरोध करना है या आपको दो हज़ार से ज़्यादा वर्णों का यूआरएल चाहिए, तो आपको एचटीटीपी पोस्ट का इस्तेमाल करके इमेज के लिए अनुरोध भेजना होगा. इन्फ़ोग्राफ़िक सर्वर, 16K तक लंबे एचटीटीपी पोस्ट अनुरोधों के साथ काम करता है.

यहां सबसे बुनियादी तरह के पीओएसटी अनुरोध का उदाहरण दिया गया है: <form> एलिमेंट का इस्तेमाल करके:

यह इमेज असल में एक पेज है, जो <iframe> में होस्ट किया गया है. यहां फ़ॉर्म कोड दिया गया है:

<form action='https://chart.googleapis.com/chart' method='POST'>
  <input type='hidden' name='cht' value='qr' />
  <input type='hidden' name='chs' value='300x300' />
  <input type='hidden' name='chl' value='This is my QR code'/>
  <input type='submit'  />
</form>

मान्य पोस्ट के अनुरोध का रिस्पॉन्स एक PNG इमेज होता है, जो GET अनुरोध के रिस्पॉन्स की तरह होता है.

अहम जानकारी: कुछ ब्राउज़र, कैश मेमोरी में सेव किए गए अनुरोधों को किसी चुनिंदा यूआरएल के लिए भेजते हैं. इसलिए, हो सकता है कि आपने पीओएसटी पैरामीटर में बदलाव किया हो, लेकिन ब्राउज़र, इमेज सर्वर के लिए क्वेरी नहीं करेगा. इस वजह से, अक्सर बदलने वाली इमेज को फिर से लोड करने की कोशिश करते समय समस्या हो सकती है. जांच के दौरान, यह समस्या हो सकती है. इस समस्या को हल करने के लिए, पोस्ट यूआरएल के आखिर में ?chid=value जोड़ें, जहां value हर अनुरोध के साथ बदलता है: इमेज सर्वर इस पैरामीटर को अनदेखा कर देगा और ब्राउज़र फिर से क्वेरी भेजेगा. सिर्फ़ कैश मेमोरी में सेव किए गए वर्शन को फिर से लोड नहीं करना होगा.

पीओएसटी का इस्तेमाल करने के कई तरीके हैं. साथ ही, इन सभी के लिए पेज कोड या पेज को होस्ट करने वाले सर्वर पर, अतिरिक्त कोडिंग की ज़रूरत होती है. पीओएसटी का इस्तेमाल करने के लिए, आम तौर पर आपको हर इमेज के लिए एक अलग पेज बनाना होगा. साथ ही, <iframe> या <img> टैग का इस्तेमाल करके, इन पेजों को अपने मुख्य पेज में जोड़ना या लिंक करना होगा, जैसा कि यहां दिखाया गया है.

यहां JavaScript और PHP, दोनों के साथ POST का इस्तेमाल करने के उदाहरण दिए गए हैं.

पोस्ट अनुरोध के लिए JavaScript का इस्तेमाल करना

JavaScript से पोस्ट करने का अनुरोध करने का सबसे आसान तरीका यह है कि आप एक ऐसा पेज बनाएं जो <input> एलिमेंट में इमेज डेटा वाले फ़ॉर्म को होस्ट करता हो. साथ ही, पेज को अनुरोध पोस्ट करने के लिए onLoad() हैंडलर में रखें. इससे पेज की जगह इमेज PNG फ़ॉर्मैट इस्तेमाल हो जाएगा. इस इमेज को होस्ट करने वाले पेज में, <iframe> का इस्तेमाल करके इस पेज को शामिल किया जाना चाहिए. इमेज पेज का कोड यहां दिया गया है:

ध्यान दें: नीचे दिए गए नमूने में एक chid पैरामीटर शामिल है, जो यूआरएल में बदलती वैल्यू पर सेट है. ऐसा करने से ब्राउज़र, ऊपर दी गई सलाह में बताई गई वजह से रीफ़्रेश हो जाता है. अगर आपकी इमेज अक्सर नहीं बदलती है, तो आपको वह पैरामीटर जोड़ने की ज़रूरत नहीं है.

post_infographic.html

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <script type='application/javascript'>
    // Send the POST when the page is loaded,
    // which will replace this whole page with the retrieved image.
    function loadGraph() {
      var frm = document.getElementById('post_form');
      if (frm) {
       frm.submit();
      }
    }
  </script>
  </head>
  <body onload="loadGraph()">
    <form action='https://chart.googleapis.com/chart' method='POST' id='post_form'
          onsubmit="this.action = 'https://chart.googleapis.com/chart?chid=' + (new Date()).getMilliseconds(); return true;">  <input type='hidden' name='cht' value='qr' />
      <input type='hidden' name='cht' value='qr' />
      <input type='hidden' name='chs' value='300x300' />
      <input type='hidden' name='chl' value='This is my QR code' />
      <input type='submit'  />
    </form>
  </body>
</html>

<form> एलिमेंट का इस्तेमाल करने पर, आपको अपनी स्ट्रिंग को यूआरएल कोड में बदलने की ज़रूरत नहीं होती.

इसके बाद, होस्ट पेज में <iframe> का इस्तेमाल करके, इस इमेज को किसी दूसरे पेज पर लोड किया जा सकता है. जैसे:

another_page.html

<iframe src="post_infographic.html" width="300" height="200"></iframe>

पोस्ट अनुरोध के लिए PHP का इस्तेमाल करना

सर्वर साइड की ज़्यादातर भाषाओं में, साफ़ तौर पर पोस्ट करने के अनुरोध किए जा सकते हैं. यहां PHP का इस्तेमाल करके पोस्ट अनुरोध करने का एक उदाहरण दिया गया है. इस उदाहरण में, एक ऐसे पेज के बारे में बताया गया है जो बिना किसी क्रम के 150 वैल्यू वाला क्यूआर कोड जनरेट करता है. इसे खुद इस्तेमाल करने के लिए, आपको $qrcode कलेक्शन को पसंद के मुताबिक बनाना होगा, ताकि उसमें अपनी वैल्यू शामिल की जा सकें.

ध्यान दें: नीचे दिए गए नमूने में एक chid पैरामीटर शामिल है, जो यूआरएल में बदलती वैल्यू पर सेट है. ऐसा करने से ब्राउज़र, ऊपर दी गई सलाह में बताई गई वजह से रीफ़्रेश हो जाता है. अगर आपकी इमेज अक्सर नहीं बदलती है, तो आपको वह पैरामीटर जोड़ने की ज़रूरत नहीं है.

imageserver-image.php

<?php
  // Create some random text-encoded data for a QR code.
  header('content-type: image/png');
  $url = 'https://chart.googleapis.com/chart?chid=' . md5(uniqid(rand(), true));
  $chd = 't:';
  for ($i = 0; $i < 150; ++$i) {
    $data = rand(0, 100000);
    $chd .= $data . ',';
  }
  $chd = substr($chd, 0, -1);

  // Add image type, image size, and data to params.
  $qrcode = array(
    'cht' => 'qr',
    'chs' => '300x300',
    'chl' => $chd);

  // Send the request, and print out the returned bytes.
  $context = stream_context_create(
    array('http' => array(
      'method' => 'POST',
      'content' => http_build_query($qrcode))));
  fpassthru(fopen($url, 'r', false, $context));
?>

JavaScript के उदाहरण से इस इमेज को जोड़ना आसान है, क्योंकि यहां बताए गए तरीके से आप <img> टैग का इस्तेमाल करके, पीओएसटी पेज पर जा सकते हैं:

another_page.html

<img width='300' height='300' src='imageserver-image.php'>