Отправка POST-запросов с помощью libcurl - PullRequest
1 голос
/ 22 марта 2011

при использовании PHP и отправке запросов POST я делаю это так:

 $ch = curl_init(POSTURL);
 curl_setopt($ch, CURLOPT_POST      ,1);
 curl_setopt($ch, CURLOPT_POSTFIELDS    , 'whatever');
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION  ,1); 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER  ,1);
 $Rec_Data = curl_exec($ch);

Теперь я хочу использовать CURL в C #.Я нашел "libcurl", но я не совсем знаю, как это сделать.Я нашел некоторые фрагменты кода в Интернете, но они не очень помогают.

Так как же я могу перевести этот код PHP в C #?

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 04 октября 2014

Вот быстрый пример из CurlSharp

using System;
using CurlSharp;

internal class EasyGet
{
    public static void Main(String[] args)
    {
        Curl.GlobalInit(CurlInitFlag.All);

        try
        {
            using (var easy = new CurlEasy())
            {
                easy.Url = "http://www.google.com/";
                easy.WriteFunction = OnWriteData;
                easy.Perform();
            }
        }
        finally
        {
            Curl.GlobalCleanup();
        }   
    }

    public static Int32 OnWriteData(Byte[] buf, Int32 size, Int32 nmemb, Object extraData)
    {
        Console.Write(Encoding.UTF8.GetString(buf));
        return size*nmemb;
    }
}

CurlSharp доступен для Win32 и Win64, а также для Linux и OSX (Mono).

Отказ от ответственности: я являюсь автором вышеупомянутой библиотеки.

1 голос
/ 22 марта 2011

Вот пример того, как использовать LibCurlNet

using System;
using SeasideResearch.LibCurlNet;

namespace Sample
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL);

            Easy easy = new Easy();
            Easy.WriteFunction wf = MyWriteFunction;
            easy.SetOpt(CURLoption.CURLOPT_URL, "http://google.com/index.html");
            easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf);
            easy.Perform();
            easy.Cleanup();
            Console.WriteLine("Press any key...");
            Console.ReadKey();
        }

        private static int MyWriteFunction(byte[] buf, int size, int nmemb, Object extraData)
        {
            foreach (byte b in buf)
                Console.Write((char)b);

            return buf.Length;
        }
    }
}

. Для большего количества примеров просто ищите stackoverflow для libcurl.Под тэгом [libcurl] есть множество фрагментов кода.Надеюсь, это поможет.

0 голосов
/ 22 марта 2011

Почему вы не можете использовать WebClient, WebRequest или HttpWebRequest?Их более чем достаточно для HTTP-вызовов (включая все остальные глаголы).

...