我必须与第三方API集成.要使用该服务,我必须“POST”到具有某些参数的特定URL.
$data = array('From' => '0999999','To' => '08888888'); $curl = curl_init(); curl_setopt($curl,CURLOPT_FAILONERROR,true); curl_setopt($curl,CURLOPT_RETURNTRANSFER,CURLOPT_SSL_VERIFYPEER,false); <--- Ignore SSL warnings curl_setopt($curl,CURLOPT_POST,true); curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
我正在尝试使用WebRequest类在.net中实现相同的功能.但是,我对如何设置post参数数据感到有点困惑.我认为上面的$data只不过是一本词典.所以我创建了一个等效的字典.但是,如何使用字典值设置post参数?
在http://msdn.microsoft.com/en-us/library/debx8sh9.aspx中,他们将字符串序列化为字节数组,然后将其设置为dataStream中的post参数.我如何为字典做同样的事情?
解决方法
通常,WebClient.UploadValues将是最简单的方法;
see MSDN for a full example.但请注意,这仅涵盖CURLOPT_POSTFIELDS和CURLOPT_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); }
注意POST隐含在这里;如果您需要不同的http方法,请使用重载:
var result = client.UploadValues(url,"PUT",data); // for example