在.net中设置post参数的等效方法是什么?

sha*_*shi 6 c# asp.net httpwebrequest

我必须与第三方API集成.要使用该服务,我必须"POST"到具有某些参数的特定URL.

该服务提供的示例代码在php中,如下所示

$data = array('From' => '0999999', 'To' => '08888888'); 
$curl = curl_init();
curl_setopt($curl, CURLOPT_FAILONERROR, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);  <--- Ignore SSL warnings
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用WebRequest类在.net中实现相同的功能.但是,我对如何设置post参数数据感到有点困惑.我认为上面的$ data只不过是一本词典.所以我创建了一个等效的字典.但是,如何使用字典值设置post参数?

http://msdn.microsoft.com/en-us/library/debx8sh9.aspx中,他们将字符串序列化为字节数组,然后将其设置为dataStream中的post参数.我如何为字典做同样的事情?

或者我的方法不正确?有一个更好的方法吗?

Mar*_*ell 8

一般来说,WebClient.UploadValues这将是最简单的方法; 有关完整示例,请参阅MSDN.但请注意,这仅涵盖CURLOPT_POSTFIELDSCURLOPT_POST.错误失败是自动和隐含的,并且响应已包含在内byte[].

using(var client = new WebClient()) {
    var data = new NameValueCollection();
    data.Add("From", "0999999");
    data.Add("To", "08888888");
    var result = client.UploadValues(url, data);
}
Run Code Online (Sandbox Code Playgroud)

注意POST在这里隐含; 如果您需要不同的http方法,请使用重载:

var result = client.UploadValues(url, "PUT", data); // for example
Run Code Online (Sandbox Code Playgroud)