C++ 'الحصول على' طلب أو كيف يمكنك تحميل الملفات في C++?

StackOverflow https://stackoverflow.com/questions/419344

سؤال

حسنا لقد قضيت ثلاثة أيام في محاولة هذا, ها هو السيناريو:

أريد تحميل '.csv ملف من جوجل ومن ثم القيام الاشياء مع البيانات من الملف.إنه من أجل تطبيق وحدة تحكم Win32.لدي هذا الأخير لأسفل, أنا فقط لا أستطيع أن لي معرفة كيفية تحميل الملف.لقد سمعت من libcurl, curlpp, ptypes ، المتداول بلدي فقط باستخدام .NET api و قيل عدة مرات:

...انها مجرد الحصول على طلب

حسنا هذا كل شيء حسن وجيد ، ولكن يجب أن تكون في عداد المفقودين شيء لأنه يبدو أن الجميع كان ولد معرفة كيفية القيام بذلك.لقد تم تمشيط من خلال الكتب النظر إلى هذا الرقم وحتى لو كان مشكلة كبيرة مع LNKerrors بعد السفر على الطريق مع "فن C++" لفترة من الوقت.

كل ما يقال, لقد تعلمت الكثير من هذا ولكن في هذه اللحظة أنا فقط أريد أن أعرف كيفية القيام بذلك.API C++ تفتقر بشكل خطير ، لا المثال التعليمات البرمجية التي يمكن العثور عليها.دروس على الانترنت هي غير موجودة تقريبا.ولا احجز من هناك يبدو أن أعتقد أن هذا هو المهم.

يمكن للشخص يرجى رمي لي الطوافة ؟ أنا رجل على الحافة هنا.

تحرير

من قبل "جوجل" أعني أنني أريد أن تحميل .ملف csv أنهم المضيف.على سبيل المثال يمكن وجدت هنا.

هل كانت مفيدة؟

المحلول

يجب أن تكون قادرة على ينحني هذا الخاص بك وسوف.

الآن أن لدي نوعا ما أجبت على سؤالك.لماذا C++?لا شيء ضد اللغة ، ولكن اختيار أفضل لغة العمل.Perl, PHP و Python(و أنا متأكد أكثر) كل كبيرة الوثائق والدعم على هذا النوع من العمليات.

في بيرل(واحد وأنا على دراية) انها فقط حوالي 3 إلى 5 أسطر من التعليمات البرمجية.

نصائح أخرى

لماذا لا تستخدم فقط ما هو بالفعل هناك ؟

UrlDownloadToFile()

منذ كنت على Win32 منصة ، هناك واحدة بنيت في libary يمكنك استخدامها لتنفيذ طلب الحصول على في نسبيا طريقة مباشرة:WinInet ، الذي هو جزء من SDK Win32.على المرجعية الأساسية WinInet ويمكن الاطلاع على MSDN.

حذر من أن يكون أنه سيكون هناك بعض الخام التزلج قدما إذا كنت لم تكن مألوفة مع Win32 API.هناك إلى حد ما مفيدة كتلة من التعليمات البرمجية المثال هنا

سوف تحصل على رابط الأخطاء إذا فشلت في إضافة مكتبة المناسبة الإشارة إلى المشروع الخاص بك.يبدو وكأنه كنت قد تعلمت بعض الدروس هناك بالفعل لذلك سوف تبقى عنوان ، ولكن أن تطمئن إلى أنك سوف تجد إشارات إلى كل المكتبات رأس الملف المراجع سوف تحتاج في وثائق Win32 (لديك فقط لمعرفة مكان على الصفحة للبحث عن ذلك).

لا يمكنك أن تفعل ذلك مع المكتبة القياسية.لأنه win32, يمكنك متابعة بول Keister المشورة.

ولكن إلقاء نظرة على libcurl, و منذ كنت في C++, أنصح بوكو انها مفيدة جدا جدا.فهي مفيدة جدا أدوات!

وثمة خيار آخر هو WinHTTP, الذي يأتي مع ويندوز.

> لا يوجد سبيل المثال التعليمات البرمجية الموجودة

???

العشرات من العينات التي تم نشرها لمدة 15 عاما..ترى على api ng الأخبار://شركات.نظام التشغيل.ms-windows.مبرمج.win32 (عينات ج)

(COM, INET الخ)

أنا أيضا كنت أبحث عن http ليب ل C++ لكن لم يتم العثور على 'مثالية' ليب. دفعة.اسيو رائع ولكن مستوى منخفض جدا بسيطة http مكتبة (على الرغم من عميل http أمثلة بداية جيدة).على C++ الشبكات المكتبة* (cpp-netlib) يبدو أنه على الطريق الصحيح ، بناء أعلى مستوى api على رأس اسيو ، ولكن ليست ناضجة جدا.تحقق من http_client سبيل المثال.

أنا أيضا أريد أن أكتب بلدي مغلفة حول اسيو أو تمديد (والإسهام) إلى cpp-netlib ما لم أتمكن من العثور على خيار أفضل.

(راجع للشغل libcurl هو لا الخيار الأفضل بالنسبة لي.إنها أكبر من ذلك بكثير api من أريد و غير عملي جدا عن شيء مثل عميل http, خاصة في C++.لا تفهموني خطأ, انها مكتبة كبيرة ولكن ليس من المناسب بسيط http العميل.)

C++ لا حقا API في حد ذاتها.القيام على الطلب الخاص بك يحتاج برنامج لفتح مقبس TCP الصدد إلى الموقع المعني ، وإرسال المعلومات إلى أسفل المقبس لتتوافق مع مواصفات HTTP, انظر هنا.هناك على الأرجح عدد من المكتبات يمكن أن تجد للمساعدة في ذلك ، على سبيل المثال ، هل يمكن أن ننظر إلى ما فتح مصدر برنامج wget الاستخدامات.إذا كنت الترميز ذلك بنفسك ، سيكون من المفيد استخدام علبة استنشاق أداة.هل يمكن أن نرى بالضبط ما يرسلها المتصفح الخاص بك إلى ملقم ويب للحصول على الملف مرة أخرى ، فقط أرسل تلك الرسالة بالضبط.فإنه ليس من الصعب جدا, ولكن من الصعب جدا.TCP هو كبير جدا منحنى التعلم في البداية.

بالمناسبة ماذا تعني "من جوجل؟"

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top