2013-05-15 8 views
5

के साथ एपीआई के माध्यम से tumblr पर स्थानीय छवि फ़ाइल पोस्ट करें मैं perl के साथ tumblr एपीआई के साथ गड़बड़ कर रहा हूं और काम करने के लिए कई कार्यों को प्राप्त कर लिया है।प्रतिलिपि

हालांकि, मुझे स्थानीय छवि फ़ाइलों को perl के माध्यम से अपलोड करने के लिए नहीं मिल सकता है।

यहाँ मेरी कोड है कि यूआरएल

use LWP::Authen::OAuth; 
    use JSON; 
    use Data::Dumper; 
    use strict; 
     my $ua = LWP::Authen::OAuth->new(
      oauth_consumer_key => 'xxx', 
      oauth_consumer_secret => 'xxx', 
      oauth_token => 'xxx', 
      oauth_token_secret => 'xxx', 
    ); 




    my $response; 
    $response = $ua->post('http://api.tumblr.com/v2/blog/mytumblr.tumblr.com/post', [ 
     type => 'photo', 
     url => 'http://www.example.com/mypic.jpg' , 
     caption => 'Test image 1', 
    ]); 


    if ($response->is_success) { 
     print "it worked"; 
    } 
    else { 
    print "it did not work \n \n \n \n"; 
    print $response->as_string; 
    } 

हालांकि के लिए काम करता है, जब मैं विकल्प "Url" पोस्ट मानकों में "डाटा" के लिए (के रूप में यहाँ अपने एपीआई विवरण में निर्देश दिए - http://www.tumblr.com/docs/en/api/v2#posting) है, मैं मिलती रहती है tumblr से एक त्रुटि प्रतिक्रिया। मैंने "डेटा" पैरामीटर में प्रवेश करने के कई तरीकों की कोशिश की है - फ़ाइल के पथ के रूप में, बाइनरी प्रस्तुति के रूप में, एक यूआरएल एन्कोडेड बाइनरी प्रस्तुति के रूप में, यूआरएल एन्कोडेड बेस 64 बाइनरी प्रस्तुति के रूप में, एक ही तत्व के रूप में उन मानों में से एक को अटक गया एक सरणी में - मैंने सभी की कोशिश की है, और प्रत्येक के साथ मुझे tumblr से एक त्रुटि संदेश मिलता है।

तो, क्या कोई मुझे दिखा सकता है कि स्थानीय छवि फ़ाइल को tumblr पर कैसे अपलोड करें?

+0

आपको क्या त्रुटि मिल रही है? – friedo

+0

'HTTP/1.1 400 खराब अनुरोध कनेक्शन: बंद दिनांक: बुध, 15 मई 2013 21:48:31 जीएमटी सर्वर: nginx सामग्री-प्रकार: एप्लिकेशन/जेसन; charset = utf-8 ग्राहक-तिथि: बुध, 15 मई 2013 21:48:31 जीएमटी ग्राहक-सहकर्मी: 66.6.40.14:80 ग्राहक-प्रतिक्रिया-संख्या: 1 ग्राहक-स्थानांतरण-एन्कोडिंग: खंडित पी 3 पी: सीपी = "सभी एडीएम डीवी पीएसएआई कॉम हमारे ओआरटीओ एसटीपी इंडियन ओएनएल "सेट-कुकी: टीएमजीओटी = 51 9 402aea446110439257710; समाप्ति = शनि, 13-मई -2023 21:48:30 जीएमटी; पथ = /; httponly {"मेटा": {"स्थिति": 400, "msg": "खराब अनुरोध"}, "प्रतिक्रिया": {"त्रुटियां": ["फोटो अपलोड करने में त्रुटि।"]}} –

+0

कैप्शन भाग को हटाने का प्रयास करें - क्या वह काम करता है? – PHearst

उत्तर

0

मैं Tumblr एपीआई के साथ पूरी तरह से परिचित नहीं हूँ, लेकिन एक त्वरित Googling मुझे इस उदाहरण पाया: https://gist.github.com/derekg/1198576

मैं कोशिश करेगा

$response = $ua->post('http://api.tumblr.com/v2/blog/mytumblr.tumblr.com/post', [ 
    type => 'photo', 
    'data[0]' => $file_contents , ## LWP::Useragent should automatically urlencode this 
    caption => 'Test image 1', 
]); 

इस जवाब https://stackoverflow.com/a/177866/810448 के अनुसार, यह संभव है कि "डेटा [] "इस स्थिति में भी काम करेगा।

मैं अनुरोध हेडर को 'सामग्री-प्रकार: एप्लिकेशन/एक्स-www-form-urlencoded' जोड़ने पर भी विचार करता हूं, यदि LWP :: Useragent पहले से ही ऐसा नहीं कर रहा है।

+0

यह काम करने के लिए प्रतीत नहीं होता है - हालांकि इस बार मुझे निम्न त्रुटि मिल रही है: –

+0

HTTP/1.1 401 अधिकृत नहीं कनेक्शन: बंद दिनांक: गुरु, 16 मई 2013 17:48:56 GMT सर्वर: अपाचे Vary: Accept-एन्कोडिंग सामग्री-लंबाई: 60 सामग्री प्रकार: आवेदन/json क्लाइंट-दिनांक: गुरु, 16 मई 2013 17:48:59 GMT ग्राहक साथियों तक: 66.6.40.14:80 ग्राहक प्रतिक्रिया-संख्या: 1 क्लाइंट-चेतावनी: अनुपलब्ध प्रमाणीकरण शीर्षलेख पी 3 पी: सीपी = "सभी एडीएम डीवी पीएसएआई कॉम हमारे ओटीआरओ एसटीपी इंडियन ओएनएल" सेट-कुकी: tmgioct = 51951c0b8ea0630258123660; समाप्ति = सूर्य, 14-मई -2023 17:48:59 जीएमटी; पथ = /; httponly एक्स-टम्बलर-यूएससी: डी = 3649265 {"मेटा": {"स्थिति": 401, "msg": "अधिकृत नहीं है"}, "प्रतिक्रिया": []} –

+0

भी - दो अनुवर्ती प्रश्न - फ़ाइल सामग्री प्राप्त करने के लिए आप क्या उपयोग करते हैं? और आप UA पोस्ट में सामग्री प्रकार कैसे सेट करते हैं? मैंने प्रत्येक के लिए कई विधियों का प्रयास किया है (फ़ाइल :: स्लर्प, मेरी $ imagepath = 'सी: \ स्क्रिप्ट \ vega1.jpg'; खुला (छवि, $ imagepath) या "$!"; मेरा $ raw_string = do {local $/= undef; ;};) - फ़ाइल अपलोड के लिए, $ ua-> default_header ('' सामग्री-प्रकार '=>' एप्लिकेशन/x-www-form- urlencoded ') ;, या POST अनुरोध में पैरामीटर के रूप में निर्दिष्ट करें - सभी खाली आ रहे हैं। मैं ईमानदारी से थोड़ा उलझन में हूँ –

संबंधित मुद्दे