【问题标题】:REST POST with parameters and a .csv带有参数和 .csv 的 REST POST
【发布时间】:2015-10-22 03:28:25
【问题描述】:

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

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

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

我在支持票中问过这个问题,我得到的是php sn-p:

<?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

提前致谢

【问题讨论】:

  • 我建议您从手动生成请求开始(通过 fiddler 或其他工具),一旦从那里完成,转换为代码会更容易。

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


【解决方案1】:

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

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

var1=value&var2=value&var3=value

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

无论如何,我建议不要直接使用 WebClient 或 HttpClient,使用像 RestSharp (http://restsharp.org/) 这样的 REST 框架,因为它会大大简化您的工作。

干杯。

【讨论】:

  • 阅读 php 文档我看到“CURLOPT_POSTFIELDS 如果值是一个数组,Content-Type 标头将设置为 multipart/form-data。”我已经尝试将正文中的 URL 编码所需参数作为查询字符串,例如“Request=importPanel&User=xxx&Token=xxx&LibraryID=xxx&Version=2.5&Format=JSON&Name=Testing1...”,似乎没有“FileContent”(或类似)变量所以它怎么知道什么是 csv 数据?我回复了支持票并提出了更多问题。
  • 如果它是多部分的,那么编码是不同的,这篇文章:stackoverflow.com/questions/2035229/… 可以帮助你,但同样,如果你使用 RestSharp,如果你将内容设置为多部分,它会自动完成
  • 谢谢,我去看看 RestSharp 然后回来
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多