使用libcurl发送POST请求

时间:2011-03-22 10:11:43

标签: c# .net curl libcurl

使用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);

现在我想在C#中使用CURL。我找到了“libcurl”,但我不知道该怎么做。我在互联网上找到了一些代码片段,但它们并没有真正帮助。

那我怎么能把那个PHP代码翻译成C#?

非常感谢。

3 个答案:

答案 0 :(得分:1)

以下是如何使用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;
        }
    }
}

有关更多示例,请搜索libcurl的stackoverflow。在[libcurl]标记下有很多代码片段在这里漫游。希望这会有所帮助。

答案 1 :(得分:1)

这是来自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)。

免责声明:我是上述图书馆的作者。

答案 2 :(得分:0)

为什么不能使用WebClient,WebRequest或HttpWebRequest?它们足以支持HTTP调用(包括所有其他动词)。