带参数的REST POST和.csv

时间:2015-10-22 03:28:26

标签: c# asp.net rest http-post

我们最近与一家调查提供商签约发送调查问卷。他们有一个REST API来导入带有联系人的.csv文件

我查看了他们的documentation" importPanel"。我可以成功地使用它来创建一个新面板(邮件列表),但无法使用其他测试客户端发布带有请求的csv

然后我查看了here,其中显示" URL:如果存在,Qualtrics API将尝试从指定的URL加载CSV文件;否则,它只是查看数据的POST。"有谁能够向我解释这意味着什么?如果我需要提供~10个必需参数,它将如何"简单地"在帖子中找到该文件?

我在支持票证中询问了这一点,我得到的是php代码段:

<?php
$baseURL = "https://clientname.qualtrics.com/WRAPI/ControlPanel/api.php";
// full path to file you want to include in post
$filePath_panel = "/path/to/panel_data.csv";
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $baseURL);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($cURL, CURLOPT_MAXREDIRS, 43);
curl_setopt($cURL, CURLOPT_POST, true);
// all options being used, including User, Token, etc.
$options = array(
// insert/update options here
"Request"   => "importPanel",
"User"  => "",
"Token" => "",
"Format"    => "JSON",
"Version"   => "2.2",
"LibraryID" => "",
"Name"  => "",
"ColumnHeaders" => ,
"Email" => ,
"FirstName" => ,
"LastName"  => ,
"Language"  => ,
"AllED" => ,
);
// add file to POST
$options['file'] = "@$filePath_panel";
curl_setopt($cURL, CURLOPT_POSTFIELDS, $options);
$results = curl_exec($cURL);
$info = curl_getinfo($cURL);
?>

我正在寻找使用C#执行此操作的各种方法,但不知道从哪里开始,我应该使用HttpClient还是WebRequest

提前致谢

1 个答案:

答案 0 :(得分:0)

据我了解你的php代码,这些选项被设置为POST数据。

如果内容不是多部分(并且我没有看到它在请求的任何位置设置),则POST内容在主体中编码为查询字符串,如下所示:

var1=value&var2=value&var3=value

将值编码(使用%XX替换的特殊字符)进行url编码非常重要,以免破坏查询序列。

无论如何,我建议不要直接使用WebClient和HttpClient,使用一些REST框架,如RestSharp(http://restsharp.org/),因为它会简化你的工作。

干杯。