无法将一段CURL转换为C#

时间:2012-07-11 22:41:04

标签: c# asp.net curl

我有以下CURL,我试图转换为C#。我没有任何CURL经验。

$ch = curl_init();
    curl_setopt_array($ch, array(
        CURLOPT_URL            => 'https://api.lanoba.com/authenticate',
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_POST           => true,
        CURLOPT_POSTFIELDS     => array(
            'token'      => $_POST['token'],
            'api_secret' => 'YOUR-API-SECRET'
        )
    ));

到目前为止,我已经想出了这个:

//Object to create a JSON object
public class LanobaJSONObject
{
    public string token { get; set; }
    public string api_secret { get; set; }
}

public void DoAuthenticationCheck()
{


    var token = Request["token"].ToString();

        var jsonObject = new LanobaJSONObject()
        {
            token = token,
            api_secret = "YOUR-API-SECRET"
        };

        var jsonVal = Json(jsonObject, JsonRequestBehavior.AllowGet);

        Uri address = new Uri("https://api.lanoba.com/authenticate");
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(address);
        ServicePointManager.ServerCertificateValidationCallback = delegate
        {
            return
                true; //always trust the presented cerificate
        };
        request.Method = "post";
        request.ContentType = "text/json";
        string response = null;
        using (var streamWriter = new StreamWriter(request.GetRequestStream()))
        {
            streamWriter.Write(jsonVal);
        }

        using (HttpWebResponse resp = request.GetResponse() as HttpWebResponse)
        {
            var reader = new StreamReader(resp.GetResponseStream());
            response = reader.ReadToEnd();
        }
//I keep getting an error code back from the provider with no real error description
//so right now I am assuming that I am doing something wrong on my end

}

任何帮助都将不胜感激。

编辑:最终答案:

在Onkelborg的帮助下,(谢谢!),这是一个有效的例子:

   var wc = new WebClient();
    var wcResponse = wc.UploadValues("https://api.lanoba.com/authenticate", new System.Collections.Specialized.NameValueCollection() { { "token", Request["token"].ToString()}, { "api_secret", "Your-Secret-Api--" } });
    var decodedResponse = wc.Encoding.GetString(wcResponse);

再一次,谢谢。

1 个答案:

答案 0 :(得分:1)

据我所知,你根本不应该发送JSON .. :)

在WebClient类上使用UploadStrings / UploadValues(不记得实际名称.. :)),它几乎就是你想要的 - 它会将namevaluecollection发布到给定的uri并返回一个带有答案的字符串:)