C# cURL-PUT请求的RestSharp版本(文本/普通)
REST API有一种方法可以使用以下cURL请求上载.csv文件的内容(作为纯文本):C# cURL-PUT请求的RestSharp版本(文本/普通),c#,rest,csv,curl,restsharp,C#,Rest,Csv,Curl,Restsharp,REST API有一种方法可以使用以下cURL请求上载.csv文件的内容(作为纯文本): https://API_BASEURL/v3/DATA/contactslist/$listID/CSVData/text:plain \ -H "Content-Type: text/plain" \ --data-binary "@./test.csv" 其中,$listID将在请求时替换为一个数字,test.csv将替换为文件内容。另外,API\u BASEURL是出于隐私原因,我在这里删除的API
https://API_BASEURL/v3/DATA/contactslist/$listID/CSVData/text:plain \
-H "Content-Type: text/plain" \
--data-binary "@./test.csv"
其中,$listID
将在请求时替换为一个数字,test.csv
将替换为文件内容。另外,API\u BASEURL
是出于隐私原因,我在这里删除的API的基本Url
我正在尝试将此请求转换为RestSharp,以便在我的程序中使用。这将是PUT
请求。我正在使用以下代码发出请求
var request = new RestRequest(string.Format("https://API_BASEURL/v3/DATA/contactslist/{0}/CSVData/text:plain", contactListId), Method.PUT);
request.AddParameter("Content-Type", "text/plain", ParameterType.HttpHeader);
request.AddBody(fileContent);
IRestResponse response = _client.Execute(request);
当我运行查询时,我怀疑API仍然认为我正在运行Xml
内容类型的请求,因此我收到以下响应:
数据内容类型“text/xml”与URL内容类型不匹配
“文本/纯文本”
你认为我做错了什么?curl命令是一个POST(添加
--trace ascii logfile.txt
以查看完整跟踪),你似乎在转换后的代码中使用了PUT。@DanielStenberg我将动词改为POST,但似乎没有什么区别。我不知道为什么RestSharper中的RestRequest
对象只接受Xml
和Json
作为它的RequestFormat属性。所以你把一些数据推(放)到另一个API?那个API期望什么?您在API上调用的方法的签名是什么?@SteenTøttrup不幸的是,API没有指定它是PUT还是POST,但根据上面的注释和cURL代码,它应该是POST请求。我所知道的关于签名的一切就是使用上面第一行提到的URL,添加“text/plain”作为标题,然后在正文中添加文件内容,@SteenTøttrup如果我在本例中忘记使用RestSharp而改用旧的HttpWebRequest
,你认为安全吗?