Friday 15 December 2017

Winhttp डाउनलोड द्विआधारी विकल्प


त्रुटि संभाल के साथ VBScript WinHttp. WinHttpRequest.5.1 उदाहरण यह डब्लूएचएसएच उदाहरण स्क्रिप्ट किसी दिए गए यूआरएल की टेक्साथएमएक्सएमएल सामग्री की HTTP (GET या POST) का उपयोग कर सकती है। यदि एक WinHttpRequest कनेक्शन टाइमआउट या त्रुटि होती है, या रिमोट सर्वर किसी त्रुटि के साथ प्रतिक्रिया करता है, तो त्रुटि विवरण विवरण की बजाय सामग्री को वापस किया जाता है। डब्लूएसएच के बजाय एएसपी पृष्ठ में कोड का उपयोग करने के लिए, Wscript. Echo को Response. Write और CreateObject सर्वर के साथ बदलें। CreateObject (यह भी देखें कि कैसे इस कोड की एक व्युत्पन्न संस्करण का उपयोग कर एक बाइनरी फ़ाइल डाउनलोड करने के लिए।) समारोह GetDataFromURL (strURL, strMethod, strPostData) मंद lngTimeout मंद strUserAgentString मंद intSslErrorIgnoreFlags मंद blnEnableRedirects मंद blnEnableHttpsToHttpRedirects मंद strHostOverride मंद strLogin मंद strPassword मंद strResponseText मंद objWinHttp lngTimeout 59000 strUserAgentString httprequester0.1 intSslErrorIgnoreFlags 13056 13056: उपेक्षा सब गलती, 0: कोई अं blnEnableRedirects सच blnEnableHttpsToHttpRedirects सच strHostOverride strLogin strPassword सेट objWinHttp CreateObject (WinHttp. WinHttpRequest.5.1) objWinHttp. SetTimeouts lngTimeout, lngTimeout, lngTimeout, lngTimeout objWinHttp. Open strMethod, strURL तो स्वीकार strmethod POST तब objWinHttp. setRequestHeader सामग्री-प्रकार, applicationx-www-form-urlencoded अंत यदि यदि strHostOverride ltgt तब objWinHttp. SetRequestHeader होस्ट, strHostOverride अंत अगर objWinHttp. Option (0) strUserAgentString objWinHttp. Option (4) intSslEr rorIgnoreFlags objWinHttp. Option (6) blnEnableRedirects objWinHttp. Option (12) blnEnableHttpsToHttpRedirects यदि (strLogin एलटीजीटी) और (str_Password ltgt) फिर objWinHttp. SetCredentials strLogin, strPassword, 0 अंत त्रुटि पर फिर से शुरू करें अगला objWinHttp. Send (strPostData) Err. Number अगर 0 यदि फिर objWinHttp. Status 200 तो GetDataFromURL objWinHttp. ResponseText अन्य GetDataFromURL एचटीएमएच amp objWinHttp. Status एपीपी objWinHttp. StatusText अंत अगर अन्य GetDataFromURL त्रुटि amp Err. Number amp एपीपी एरर। एसआरएस amp एपीआई Err. Description समाप्ति त्रुटि GoTo 0 सेट पर अगर objWinHttp कुछ नहीं अंत FunctionVBScript बाइनरी फ़ाइल HTTP डाउनलोडर यह WSH स्क्रिप्ट किसी दिए गए यूआरएल से एक फाइल डाउनलोड कर सकता है और इसे एक बाइनरी स्ट्रीम का उपयोग कर डिस्क पर सहेज सकता है। WSH के बजाय एएसपी पृष्ठ में कोड का उपयोग करने के लिए, बस BinaryGetURL () और SaveBinaryData () फ़ंक्शन का उपयोग करें और CreateObject को Server. CreateObject के साथ बदलें। Dim objArgs मंद strURL Dim strFileName सेट objArgs WScript. Arguments यदि objArgs. count 0 तब Wscript. echo (सिंटेक्स: GetBinary URL लक्ष्य फ़ाइल नाम amp vbcrlf amp vbcrlf amp उदाहरण: amp vbcrlf amp GetBinary serverfolderfile. zip amp vbcrlf amp GetBinary serverdat. zip c : dlfile. zip amp vbcrlf amp GetBinary serverfile. dat सुरक्षित डैट amp vbcrlf amp GetBinary servernews. htm डी: dataservernews. html) ElseIf objArgs. count 1 फिर strork objArgs. Item (0) strFileName strURL strFileName बदलें (strFileName,,) strFileName बदलें (strFileName, amp,) strFileName की जगह (strFileName, strfileName) (strfileName, Len (strFileName) - InStrRev (strFileName,)) यदि strFileName फिर strFileName strURL strFileName की जगह (strFileName,,) strFileName की जगह (strFileName,,) strFileName बदलें (strFileName,,) यदि SaveBinaryData BinaryGetURL (strURL) है, strFileName ElseIf objArgs. count 2 फिर strork objArgs. Item (0) strFileName objArgs. Item (1) SaveBinaryData BinaryGetURL (strURL), strFileName अन्य Wscript. echo (बहुत सारे तर्क अगर एक पथ में रिक्त स्थान होता है, तो कृपया तर्क के चारों ओर कोटेशन चिह्न डाल दें।) यदि फ़ंक्शन BinaryGetURL (strURL) मंद objWinHttp dim lngTimeout मंद strMethod मंद strPostData मंद strUserAgentString Dim intSslErrorIgnoreFlags Dim blnEnableRedirects Dim blnEnableHttpsToHttpRedirects lngTimeout 59000 मिलीसेकेंडस strMethod प्राप्त strPostData strUserAgentString binarygetter1.0 intSslErrorIgnoreFlags 13056 13056 उपेक्षा सब गलती, 0 यह सच है blnEnableHttpsToHttpRedirects सच सेट objWinHttp CreateObject (WinHttp. WinHttpRequest.5.1) objWinHttp. SetTimeouts lngTimeout, lngTimeout, lngTimeout, lngTimeout objWinHttp. Option स्वीकार नहीं अं blnEnableRedirects (0) strUserAgentString objWinHttp । ओपज (4) intSslErrorIgnoreFlags objWinHttp. Option (6) blnEnableRedirects objWinHttp. Option (12) blnEnableHttpsToHttpRedirects objWinHttp. Open strMethod, strURL, गलत अगर strfethod पोस्ट फिर objWinHttp. setRequestHeader सामग्री प्रकार, applicationx - www - फार्म - urlencoded अंत अगर objWinHttp। भेजें (strPostData) यदि (objWinHttp. Status 200) तो BinaryGetURL objWinHttp. ResponseBody अंत यदि सेट करें objWinHttp कुछ भी नहीं अंत समारोह समारोह SaveBinaryData (arrByteArray, strFileName) यदि VarType (arrByteArray) gt 8192 तब Dim objBinaryStream सेट objBinaryStream CreateObject (ADODB. Stream) objBinaryStream। प्रकार 1 objBinaryStream. Open () objBinaryStream. Write (arrByteArray) objBinaryStream. SaveToFile strFileName, 2 अंत अगर अंत FunctionWeb बाइनरी डाउनलोड विधियों यहां HTTP पर एक बाइनरी डाउनलोड करने का सामान्य तरीका है यह चार अलग-अलग बाइनरी डाउनलोड करने योग्य वस्तुओं की कोशिश करता है, और डिस्क में बाइनरी को सहेजने के लिए दो अलग-अलग विधियां हैं। काफी बुलेटप्रूफ: मैं चारों ओर खेल रहा था और अन्य तरीकों से पाया कि आप द्विआधारी डाउनलोड WSC फ़ाइल करने के लिए सिस्टम का दुरुपयोग कर सकते हैं: आपको WSC फाइलें पंजीकृत करने की ज़रूरत नहीं है। इसके बजाय, आप अपनी स्क्रिप्ट में उनका स्थान निर्दिष्ट कर सकते हैं। आप एक HTTP स्थान भी निर्दिष्ट कर सकते हैं। फ़ाइल स्वचालित रूप से डाउनलोड की जाती है और आपके IE कैश में समाप्त हो जाती है। यदि आप लक्ष्य के रूप में एक असली WSC फ़ाइल के अलावा कुछ और निर्दिष्ट करते हैं, तो वह डाउनलोड हो जाता है और एक स्क्रिप्ट के रूप में चला जाता है। जो एक त्रुटि फेंकने वाला है तो आप बस त्रुटि को रोकते हैं: त्रुटि पर फिर से शुरू करें अगला GetObject स्क्रिप्ट: ericphelpsimagelogo1.gif उपरोक्त कोड साधारण VBS कोड है। डब्लूएससीसी फाइलों के साथ कुछ भी नहीं करना, सिवाय इसके कि स्क्रिप्ट के साथ GetObject विधि: प्रोटोकॉल सामान्य रूप से एक WSC फ़ाइल प्राप्त करने के लिए उपयोग किया जाता है। हम इसे कुछ और पाने के लिए यहां का उपयोग करते हैं। उपरोक्त वीबीएस कोड मेरे वेब पेज से ग्राफ़िक डाउनलोड करेगा और इसे IE कैश में ड्रॉप करेगा। कैश में फ़ाइल का पता लगाने के लिए, इस तरह के कोड का उपयोग करें: वास्तविक जीवन में, youd कैश खोजना चाहते हैं FIRST, आपको मिल गया किसी भी मेल हटाएं, फिर आप चाहते थे फ़ाइल डाउनलोड करें तो कैश में जो कुछ भी आप पाते हैं वह निश्चित है कि आप क्या चाहते हैं। डब्लूएसएफ फ़ाइल: यदि आप वीबीएस फाइलों के बजाय वीएसएच फाइल में अपना वीबीएस कोड लिखते हैं, तो आपको बहुत अधिक विकल्प निर्दिष्ट करने होंगे। जिसमें बाहरी कोड प्राप्त करना है: ltjobgt ltscript भाषा vbscript srcericphelpsimagelogo1.gifgt ltjobgt दुर्भाग्य से, यह पूरी डब्लूएसएफ फ़ाइल दुर्घटनाग्रस्त करता है, इसलिए आपको अपनी वीबीएस फ़ाइल बनाने या ऊपर की तरह डब्लूएसएफ फ़ाइल का उपयोग करने की आवश्यकता है और इसे wsh के साथ चलाएं।.Exec ताकि आपका मेनलाइन कोड बच जाएगा इस VBS कोड की तरह कुछ प्रयास करें: यह महत्वपूर्ण है कि wsh. Run को CSCRIPT. EXE के साथ चल इंजन के रूप में होता है और यह शून्य के साथ विंडो प्रकार के रूप में चलाता है। जब डब्ल्यूएसएफ फ़ाइल अपनी त्रुटि फेंकता है, यदि इंजन wscript था, तो यह एक त्रुटि संवाद पॉप अप करेगा यह बुरी बात है। Cscript इंजन का उपयोग करके, त्रुटि को डॉस बॉक्स में लिखा जाता है। और विंडो प्रकार को शून्य में सेट करके, कोई भी डॉस बॉक्स भी नहीं देखता है। और निश्चित रूप से, file logo. gif आपके IE कैश में दिखाई देगा। दोबारा, एक बार फ़ाइल कैश में है, तो FindInCache और SearchForFile फ़ंक्शन के समान कोड का उपयोग करें जो मैंने ऊपर दिखाए हैं ताकि आपकी फ़ाइल का पता लगा सके। सभी को शुभकामनाएं। कुछ दिनों के लिए मैं एक छोटा सा ऐप कोडिंग कर रहा हूं जो WinHTTP का उपयोग करता है, और यह फ़ोरम सामान्य खोजों के लिए बहुत मददगार रहा है। अभी मुझे एक कार्यशील कार्य मिला है जो WinHTTP के माध्यम से एक टेक्स्ट फ़ाइल डाउनलोड करता है। समस्या यह है, कि मुझे द्विआधारी डाउनलोड करने की आवश्यकता है। मैंने यह देखने के लिए अपना टेक्स्ट डाउनलोड कोड संशोधित किया है कि यह काम करता है, लेकिन यह नहीं है Im नमूना कोड का एक संशोधित संस्करण का उपयोग कर: DWORD dwSize 0 DWORD dwDownloaded 0 LPSTR pszOutBuffer BOOL bResults फिक्स्ड संकेतक h सत्र, नल, hConnect शून्य, hRequest NULL उपयोग करें WinHttpOpen सत्र संचालन प्राप्त करने के लिए। एच सशन विन एचटीटीपी ओपन (ल्यूवोटविन्थटीटीपी उदाहरण 1.0 क्वाट, विंहटीटीपीएक्ससीएसटीएपीडईएफएलटीप्रोक्सी, विन्थटैपोनोप्रोक्सीएनी, विंथेटप्पनओक्प्रोक्सीबायपास, 0) एक एचटीटीपी सर्वर निर्दिष्ट करें। यदि (hSession) hConnect WinHttpConnect (hSession, Lquotmicrosoft quot, INTERNETDEFAULTHTTPSPORT, 0) एक HTTP अनुरोध हैंडल बनाएँ यदि (hConnect) hRequest WinHttpOpenRequest (hConnect, LquotGETquot, NULL, NULL, WINHTTPNOREFERER, WINHTTPDEFAULTACCEPTTYPES, WINHTTPFLAGSECURE) एक अनुरोध भेजें। यदि (hRequest) bResults WinHttpSendRequest (hRequest, WINHTTPNOADDITIONALHEADERS, 0, WINHTTPNOREQUESTDATA, 0, 0, 0) अनुरोध समाप्त करें यदि (bResults) bResults WinHttpReceiveResponse (hRequest, NULL) डेटा की जाँच कर रहें, जब तक कि कुछ भी नहीं बचा। यदि (bResults) उपलब्ध डेटा के लिए जाँच करें dwSize 0 यदि (WinHttpQueryDataAvailable (hRequest, ampdwSize)) printf (उद्धरण यू में WinHttpQueryDataAvailable. nquot, GetLastError ()) बफर के लिए स्थान आवंटित करें। pszOutBuffer नया chardwSize1 अगर (pszOutBuffer) printf (memorynquot के बाहर) dwSize0 अन्य डेटा पढ़ें। ज़ीरोमामेरी (pszOutBuffer, dwSize1) यदि (WinHttpReadData (hRequest, (LPVOID) pszOutBuffer, dwSize, ampdw डाउनलोड किया हुआ है) printf (quot. ReadDr. VinHttpReadData. nquot, GetLastError () में) और printf (quotsquot, pszOutBuffer) बफ़र को आवंटित स्मृति नि: शुल्क। pszOutBuffer हटाएं (dwSize gt 0) किसी भी त्रुटि रिपोर्ट करें if (bResults) printf (quotError d हुआ है। nquot, GetLastError ()) किसी भी खुली हैंडल को बंद करें यदि (hRequest) WinHttpCloseHandle (hRequest) यदि (hConnect) WinHttpCloseHandle (hConnect) अगर (hSession) WinHttpCloseHandle (hSession) इस कोड को कैसे बाइनरी डाउनलोड के साथ बनाने के किसी भी sugestions आईओएस के साथ कुछ ofstream फ़ाइल की सोच Im: द्विआधारी लेकिन मैं नहीं कर सकता इसे काम करने लायक बनाओ। अग्रिम धन्यवाद यह अब काम करता है मुझे फ़ाइल को द्विआधारी मोड में खोलना पड़ा: इस प्रकार, कोई भी पुनर्रचना डाउनलोड कर सकता है, जो एमएसडीएन के नमूना कोड को बरकरार रखता है। केवल एक फाईल खोलने वाली फाइलें, इसे फ़िलिट (प्रिंटफ़ को स्टडआउट के स्थान पर) का उपयोग करके लिखकर फाइल को बंद कर रही है। यह भी ध्यान रखें कि संसाधन को यूआरएल मैन्युअल रूप से मेजबान और पथ में विभाजित किया जाना चाहिए और दो अलग-अलग एपीआई कॉलों को पारित इस जानकारी का प्रत्येक टुकड़ा होना चाहिए। उदाहरण के लिए यदि आप इस प्रकार rosource को इंगित करते हैं: तो सुनिश्चित करें कि आप केवल कुछ WinHttpConnect और folderfile. xyz WinHttpOpenRequest पास करें। और यदि आप किसी ओस्ट्रीम ऑब्जेक्ट को WinHTTP API से पास करते हैं, तो यह काम नहीं करता। विमान चार बफ़र्स का उपयोग करें और फिर बफर को अपनी धाराओं में लिखें यह काम करेगा शनिवार, 17 मई, 2008 9:26 पूर्वाह्न: WinHTTP के साथ बाइनरी डाउनलोड मैं इस थ्रेड को चिह्नित करने जा रहा हूं क्योंकि आपने अनुरोध के अनुसार अपनी समस्या के बारे में और जानकारी नहीं दी है - मैं मानता हूं कि आप समस्या को सुलझाने के लिए स्वयं या एक इस सूत्र में दिए गए सुझावों में से आपको समस्या का समाधान करने में मदद मिली। यदि आपके पास एक समाधान है, तो आप इसे पोस्ट कर सकते हैं, ताकि दूसरों को यह पता चल सके। यदि आपके पास कोई समाधान नहीं है, तो कृपया अधिक विवरण सबमिट करें और फिर धागा को अनुत्तरित पर चिह्नित करें। शुक्रवार, 9 मई, 2008 8:56 पूर्वाह्न मुझे लगता है कि समस्या निम्नलिखित वक्तव्य में है, printf (quotsquot, pszOutBuffer) यह पहली बार 0 यानी एक बाइट संख्यात्मक मान 0 के साथ आगे बढ़ना बंद कर देगा। इसके बजाय सीधे pszOutBuffer को फ़ाइल में लिखें। शुक्रवार, 09 मई, 2008 5:56 PM मेरे पास एक समान समस्या है। अब हम चर्चा पूरी करने की ओर बढ़ सकते हैं मैं भी MSDN से WinHttp नमूना का उपयोग कर रहा हूं, और एक छवि (jpeg, gif, png।) को डाउनलोड करना चाहता हूं। कोड अपरिवर्तित रखते हुए (यानी WinHttpOpenRequest के लिए WINHTTPDEFAULTACCEPTTYPES को पारित करना) मैं डिस्क पर एक फ़ाइल में लिखने के लिए फ़िलिट का उपयोग कर रहा हूँ कोड में मैं dwDownloaded WinHttpReadData को पारित पैरामीटर के मूल्य लॉग इन करें। मैं फ़िलिट द्वारा लिखित बाइट्स को भी लॉग करता हूं: एफ्रॉइट (pszDataBuffer, (sizet) dwDownloaded, (sizet) 1, fp) दोनों मैच, और वे वेब सर्वर में रहते हुए छवि के आकार से मेल खाते हैं, जो मैं डाउनलोड कर रहा हूं। लेकिन डाउनलोड की गई तस्वीर चित्र दर्शक के रूप में छवि के रूप में नहीं खुलती है। इसके अलावा, डिस्क पर डाउनलोड की गई फ़ाइल का आकार लगभग वास्तविक आकार के लगभग दोगुना है। कैसे आती है और लिखित डेटा एक छवि फ़ाइल क्यों नहीं है उपर्युक्त चरणों का काम नहीं कर रहा है, मैंने WinHttpOpenRequest को शून्य-समाप्त स्ट्रिंग्स की एक सरणी पारित की है, इस तरह: (i0 iilt10 i) शून्यमॉमी (mediatypei, 20) स्ट्रिंगकैप ( mediatypes0, 20, Lquottexthtmlquot) StringCchCopy (mediatypes1, 20, Lquotimagepjpegquot) StringCchCopy (mediatypes2, 20, Lquotimagegifquot) WinHttpOpenRequest (hConnect, LquotGETquot, resourcepath, शून्य, WINHTTPNOREFERER, (LPCWSTR) mediatypes, WINHTTPFLAGBYPASSPROXYCACHE) और इसी भेज अनुरोध कॉल है (नहीं बदला गया ): WinHttpSendRequest (hRequest, WINHTTPNOADDITIONALHEADERS, 0, WINHTTPNOREQUESTDATA, 0, 0, 0) इस बार WinHttpSendRequest निम्न त्रुटि के साथ विफल रहता है: 87: गलत पैरामीटर Wheres गलती यह अब काम करता है मुझे फ़ाइल को द्विआधारी मोड में खोलना पड़ा: इस प्रकार, कोई भी पुनर्रचना डाउनलोड कर सकता है, जो एमएसडीएन के नमूना कोड को बरकरार रखता है। केवल एक फाईल खोलने वाली फाइलें, इसे फ़िलिट (प्रिंटफ़ को स्टडआउट के स्थान पर) का उपयोग करके लिखकर फाइल को बंद कर रही है। यह भी ध्यान रखें कि संसाधन को यूआरएल मैन्युअल रूप से मेजबान और पथ में विभाजित किया जाना चाहिए और दो अलग-अलग एपीआई कॉलों को पारित इस जानकारी का प्रत्येक टुकड़ा होना चाहिए। उदाहरण के लिए यदि आप इस प्रकार rosource को इंगित करते हैं: तो सुनिश्चित करें कि आप केवल कुछ WinHttpConnect और folderfile. xyz WinHttpOpenRequest पास करें। और यदि आप किसी ओस्ट्रीम ऑब्जेक्ट को WinHTTP API से पास करते हैं, तो यह काम नहीं करता। विमान चार बफ़र्स का उपयोग करें और फिर बफर को अपनी धाराओं में लिखें यह काम करेगा शनिवार, 17 मई, 2008 9:26 पूर्वाह्न

No comments:

Post a Comment