2010-08-09 14 views
5

कोल्ड कोड में यह कोड कैसा दिखता है?PHP PUT HTTP अनुरोध कोल्डफ्यूजन

protected function httpPut($url, $params = null, $data = null) 
    { 
     $fh = fopen('php://memory', 'rw'); 
      fwrite($fh, $data); 
      rewind($fh); 

    $ch = curl_init($url); 
    $this->addOAuthHeaders($ch, $url, $params['oauth']); 
    curl_setopt($ch, CURLOPT_PUT, 1); 
    curl_setopt($ch, CURLOPT_INFILE, $fh); 
    curl_setopt($ch, CURLOPT_INFILESIZE, strlen($data)); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $resp = $this->curl->addCurl($ch); 
    fclose($fh); 
    return $resp; 
    } 

मेरे पास निम्न की तरह कुछ है, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है।

<cffile action="write" file="d:\my\directory\path\test.xml" output="#arguments.requestXML#"> 
<cfhttp url="#oaAccessTokenURL#" method="#arguments.requestType#" charset="UTF-8"> 
    <cfheader name="Authorization" value="#oauthheader#"> 
    <cfhttpparam type="file" name="Course" file="d:\my\directory\path\test.xml">  
</cfhttp> 

मैं PHP को समझने के लिए $ डेटा चर (जो सिर्फ XML डेटा की एक श्रृंखला है) http अनुरोध में डाल दिया है और कैसे नकल करने कि ColdFusion में हो रही है के बारे में पर्याप्त जानकारी नहीं है।

+1

मैं php गुरु या तो नहीं कर रहा हूँ। लेकिन मेरा अनुमान होगा कि यह अनुरोध के "बॉडी" में एक्सएमएल भेज रहा है। Cfhttpparam type = "body" का उपयोग करने का प्रयास करें और # requestXML # को मान के रूप में उपयोग करें। – Leigh

+0

कोल्डफ्यूज़न इंस्टॉलेशन में पहले से ही अपाचे http लाइब्रेरी है, यह जांचें कि जावा में यह कैसे किया जा सकता है, शायद सबसे तेज़ और सबसे अनुकूल समाधान जो मैं अभी सोच सकता हूं। –

+0

@Leigh - मैंने अभी कोशिश की है और अभी भी एक त्रुटि हो रही है। अगर यह किसी की मदद करता है, तो मुझे जो त्रुटि मिल रही है वह है: असमर्थित मीडिया प्रकार 'एप्लिकेशन/ऑक्टेट-स्ट्रीम' – Jason

उत्तर

0

यहाँ (जावा डॉक्स से) जावा चिंगारी है, तो आप इस पर काम करने की जरूरत है:

PutMethod put = new PutMethod("http://jakarta.apache.org"); 
     put.setRequestBody(new FileInputStream("UploadMe.gif")); 

इस तरह सीएफ में अनुवाद किया है:

<cfset myPut = createObject("java", "org.apache.commons.httpclient.methods.PutMethod") /> 
<cfset myPut.init("http://example.com") /> 
<cfset myInputStream = createObject("java", "java.io.FileInputStream") /> 
<cfset myInputStream.init("myxml.xml") /> 
<cfset myPut.setRequestBody(myInputStream) /> 

और इसी तरह ...

लिंक में मैंने उपरोक्त चिपकाया है, आप इस तरह से कुछ देख सकते हैं:

URL url = new URL("http://www.example.com/resource"); 
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection(); 
httpCon.setDoOutput(true); 
httpCon.setRequestMethod("PUT"); 
OutputStreamWriter out = new OutputStreamWriter(
    httpCon.getOutputStream()); 
out.write("Resource content"); 
out.close(); 

जावा दक्षिणी काम ढूंढें और इसे सीएफ में अनुवाद करें।

संपादित करें:

समाधान के लिए नीचे दी गई टिप्पणियां देखें।

+0

क्या आपको लगता है कि एक शुद्ध CFML समाधान है? – Henry

+2

यहाँ कैसे cfrest गूगल समूह में किया जाता है: http://cfrest.googlegroups.com/web/apiUtilities.cfc?gda=GD5yz0IAAABIZNuY_A2GQeIp6iDWbK7VaStTUa30d_821IbfLDQgDohJfanwNHy4DV68OGE7zINV4u3aa4iAIyYQIqbG9naPgh6o8ccLBvP6Chud5KMzIQ –

+0

और यहाँ कैसे "देते हैं" करने के लिए फ़ाइल http://www.bennadel.com/blog cfhttp करने के लिए/619- थ्रोइंग- और- पकड़ना- ए- फ़ाइल- उपयोग- सीएफएचटीपी- के लिए- बॉथ- क्रियाएँ एचटीएम –

1

मैं आपके cfhttp कॉल में विधि = "put" जोड़ने का प्रयास करूंगा। इससे सीएफएचटीटीपी सही http क्रिया (इस मामले में पुट) भेज देगा।

0

मान लीजिए कि आप एक पुट विधि कर रहे हैं, तो आप एक्सएचआर डेटा प्राप्त करने के लिए कोल्डफ्यूजन के GetHttpRequestData() फ़ंक्शन का उपयोग कर सकते हैं।

फिर आप यह कुछ इस तरह कर रही द्वारा बचा सकते हैं:

<cfset xhr_data = GetHttpRequestData() /> 
<cffile action="write" file="PATH/FILENAME" output="#xhr_data.content#"> 
संबंधित मुद्दे