C# 带有参数和.csv的REST POST

C# 带有参数和.csv的REST POST,c#,asp.net,rest,http-post,C#,Asp.net,Rest,Http Post,我们最近与一家调查机构签约,发送调查结果。他们有一个RESTAPI来导入带有联系人的.csv文件 我在“importPanel”下查看了他们的网站。我可以成功地使用它创建一个新的面板(邮件列表),但无法使用rest测试客户端发布csv和请求 然后我看了看上面写着“URL:如果存在,Qualtrics API将尝试从指定的URL加载CSV文件;否则,它只是查看帖子中的数据。”有人能向我解释这意味着什么吗?如果我需要提供10个必需的参数,它将如何“简单地”在帖子中找到该文件 我在一张支持票中问了这个

我们最近与一家调查机构签约,发送调查结果。他们有一个RESTAPI来导入带有联系人的.csv文件

我在“importPanel”下查看了他们的网站。我可以成功地使用它创建一个新的面板(邮件列表),但无法使用rest测试客户端发布csv和请求

然后我看了看上面写着“URL:如果存在,Qualtrics API将尝试从指定的URL加载CSV文件;否则,它只是查看帖子中的数据。”有人能向我解释这意味着什么吗?如果我需要提供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


提前感谢

因为我了解您的php代码,这些选项设置为POST数据

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

var1=value&var2=value&var3=value
对值进行url编码(用%XX替换特殊字符)以避免中断查询序列非常重要

无论如何,我建议不要直接使用WebClient或HttpClient,使用一些REST框架,如RestSharp(),因为它将简化您的许多工作


干杯。

阅读php文档时,我看到“如果值是数组,则内容类型标题将设置为多部分/表单数据。”我已经尝试将正文中的必需参数URL编码为查询字符串,如“Request=importPanel&User=xxx&Token=xxx&LibraryID=xxx&Version=2.5&Format=JSON&Name=Testing1…”而且似乎没有“FileContent”(或类似的)变量,那么它如何知道什么是csv数据呢?我回复了支持票证并问了更多问题。如果是多部分,那么编码不同,这篇文章:可以帮助您,但是,如果您使用RestSharp,它会自动完成,如果您将内容设置为多部分谢谢,我将签出RestSharp并回来。我建议您从手动生成请求开始(通过fiddler或其他工具),并且一旦您从那里获得了它,将更容易转换为代码。