سؤال

لدينا هذا البرنامج الذي يحتوي على عنصر خدمات ويب.

والآن، حان المسؤول عن هذا النظام بالنسبة لي، والرغبة في استيراد البيانات إلى النظام باستخدام المكون خدمات ويب.

وهكذا، ذهبت لقراءة الوثائق في محاولة لمعرفة هذا الشيء خارجا وأرى أشياء من هذا القبيل:

<الإضراب>


<الإضراب> <وأ href = "http://www.gtcc.edu/temp/spaces.xml.documentation.htm" يختلط = "noreferrer" > اضغط هنا لمعرفة ما أتحدث عنه (وهذا يبدو أفضل في فايرفوكس، والكروم، ورحلات السفاري)

وهذا التوثيق يعطي أمثلة على التفاعل مع النظام باستخدام الأفعال HTTP مثل GET، POST أو PUT، DELETE. ولكن في تجربتي محدودة، لم يسبق لي أن ترسل لا أحد PUT HTTP ولا DELETE.

وكيف يمكنك أن تفعل ذلك؟ لقد بنيت أشكال HTML التي لديها أسلوب = "آخر" أو طريقة = "الحصول على" وإرسال الطلب إلى كل ما هو محدد في سمة العمل (العمل = "someResource"). ولكن أنا لا أعرف حقا ما يجب القيام به مع هذا الشيء PUT.

إذا كان لي أن أخمن، كنت أود أن يكون لبناء التطبيق الذي يخلق نوعا من كائن HTTP طلب وتعيين كافة الخصائص منه، وتشمل بطريقة أو بأخرى البيانات أريد أن أضع على الموارد (<الإضراب>


<الإضراب> أحاول أن استخدام REST المصطلحات، التي شيء آخر هو جديد جدا بالنسبة لي
). بعد ذلك سيرسل الطلب باستخدام لغتي البرمجة وبلاه بلاه بلاه. أنا مجرد المضاربة في هذا الشأن. يرجى تقديم بعض المساعدة!

واعتقدت أنني كنت المطور على شبكة الإنترنت، لأنني أعرف أشياء مثل XHTML، CSS، وجافا سكريبت، وما إلى ذلك ولكن انها بدأت تبدو وكأنها لا أعرف أي شيء عن الأسس التي تقوم عليها شبكة الإنترنت على الإطلاق (HTTP).

تحرير

وPS: I البرنامج في الغالب مع صافي. لذلك، فإن أي الأمثلة في صافي يكون رائع جدا.

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

المحلول

وإليك C # المثال باستخدام HttpWebRequest:

using System;
using System.IO;
using System.Net;

class Test
{
        static void Main()
        {
                string xml = "<xml>...</xml>";
                byte[] arr = System.Text.Encoding.UTF8.GetBytes(xml);
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://localhost/");
                request.Method = "PUT";
                request.ContentType = "text/xml";
                request.ContentLength = arr.Length;
                Stream dataStream = request.GetRequestStream();
                dataStream.Write(arr, 0, arr.Length);
                dataStream.Close();
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                string returnString = response.StatusCode.ToString();
                Console.WriteLine(returnString);
        }
}

على تحديث : في هناك الآن فئة HttpClient وإصلاحه في System.Net.Http (<لأ href = "https://www.nuget.org/packages/Microsoft.Net.Http" يختلط = " نوفولو noreferrer "> كما تتوفر حزمة NuGet ) أن يجعل هذا أسهل قليلا:

using System;
using System.Net.Http;

class Program
{
    static void Main()
    {
        var client = new HttpClient();
        var content = new StringContent("<xml>...</xml>");
        var response = client.PutAsync("http://localhost/", content).Result;
        Console.WriteLine(response.StatusCode);
    }
}

نصائح أخرى

وPUT و DELETE من المرجح أن تتطلب منك استخدام AJAX وجعل XMLHttpRequests منذ علامة نموذج يعتمد فقط الحصول على وظيفة الأفعال وصلات فقط جعل طلبات GET.

ومع مسج:

 $.ajax( {
       url: '/controller/action',
       type: 'PUT',
       data: function() { ...package some data as XML },
       dataType: 'xml',
       ... more options...
 );

وهذه المذكرة على مسج اياكس الصفحة تحذر من أن بعض المتصفحات دون ' دعم T وضع وDELETE لنوع الطلب. FWIW، أنا لم تستخدم PUT لكن قد استخدمت DELETE في IE وFF. لم تختبر في سفاري أو أوبرا.

وهنا هو كيف نفعل ذلك في الضفيرة: <لأ href = "http://inquirylabs.com/blog2009/2006/08/04/how-to-use-curl-to-test-restful-rails/" يختلط = "نوفولو noreferrer"> كيفية استخدام الضفيرة لاختبار القضبان مريحة

وأو ... يمكنك بالتأكيد استخدام شكل HTML. إذا كان التطبيق غير مريحة حقا، وسوف تفهم الإجراءات REST، والسماح فقط تنفيذ إجراءات معينة استنادا إلى الطريقة التي تستخدمها.

وأنت لا تستطيع أن تضع باستخدام نموذج HTML (ويعرف المواصفات <لأ href = "http://www.w3.org/TR/html401/interact/forms.html#h-17.13.1" يختلط = " نوفولو noreferrer "> الحصول فقط / وظيفة للحصول على النماذج).

ولكن أي API HTTP يجب أن تسمح لك لوضع، في نفس الطريقة التي تسمح لك GET أو POST. على سبيل المثال، هنا جافا HttpClient وإصلاحه وثائق ، الذي تفاصيل PUT جنبا إلى جنب مع جميع غيرها من الأفعال HTTP.

وأنا لا أعرف اللغة التي تستخدمها، ولكن أعتقد أنه ستكون تافهة جدا لكتابة التطبيق لإجراء PUT HTTP.

ولقد وجدت هذه القطعة رائع حقا من البرمجيات الحرة ودعا RESTClient .

وهذا يتيح لك التفاعل مع الموارد HTTP باستخدام الأفعال المختلفة، ووضع يدويا رؤوس والجسد، ووضع معلومات والتوثيق، وخدمة تصميم المواقع، تشغيل البرامج النصية اختبار، الخ.

وهذا سيساعدني لمعرفة كيفية التفاعل مع شركائنا "خدمات ويب" البرنامج الذي هو في الحقيقة مجرد API مريحة لقاعدة بيانات البرنامج.

واختبار المعهد باعتباره امتدادا الكروم https://chrome.google.com/webstore/detail/fdmmgilgnpjigdojojpjoooidkmcomcm

هنا هو الأداة التي تتيح لك سحب وإسقاط لوضع الملفات

و"الآن، حان المسؤول عن هذا النظام بالنسبة لي، والرغبة في استيراد البيانات إلى النظام باستخدام المكون خدمات ويب".

وخدمات الويب لا علاقة لها أشكال HTML قليلا.

إما القيام به

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

ويمكنك أن اكتب C # أو برنامج VB التي تستخدم HTTP للقيام طرحه للURL خدمات ويب معين مع مجموعة معينة من البيانات.

وهنا، على سبيل المثال، بعض نموذج التعليمات البرمجية VB: HTTP: // developer.yahoo.com/dotnet/howto-rest_vb.html#post

واستبدال سلسلة أسلوب "POST" مع "PUT".

وماذا عن اعطاء libcurl.NET محاولة: http://sourceforge.net/projects/libcurl الصافي /

ومجرد ما يصل رؤساء بعض مدراء الشبكة كتلة الرافضة لأسباب مختلفة. لذلك قد تضطر لاستخدام POST بدلا من PUT. تحقق مع العمليات الخاصة بك.

وPUT و DELETE ليست جزءا من HTML4، ولكن تم تضمينها في مواصفات HTML5. لهذا السبب، المتصفحات الأكثر شعبية ليس لديها دعم جيد بالنسبة لهم، لأنها تركز على HTML4. ومع ذلك، فهي بالتأكيد جزء من HTTP، وكانت دائما. كنت تفعل PUT باستخدام بعض العملاء غير المتصفح، أو استخدام نموذج في متصفح HTML5 جاهزة.

تحديث: PUT و DELETE هي جزء لم يعد من HTML5 لأشكال. انظر: HTTP: // www.w3.org/TR/html5/association-of-controls-and-forms.html#attr-fs-method

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