我在使用RestSharp处理一个REST API时遇到了问题,这是我正在开发的项目所需的。我需要发送的请求包括三个部分:一个API密钥头、一个要上传的文件和一堆JSON格式的数据。该API要求使用"数据"作为表单字段名来发送数据部分。由于在请求正文中命名了字段"data",出现了问题。
我的代码如下:
var request = new RestRequest(UPLOAD_DOC_URLSEGMENT, Method.POST)
{
RequestFormat = DataFormat.Json,
AlwaysMultipartFormData = true,
JsonSerializer = new RestSharpJsonDotNetSerializer(customSerializer)
};
if (doc is DocA)
request.AddParameter("data",doc as DocA,ParameterType.RequestBody);
//request.AddBody(doc as DocA);
else
request.AddParameter("data", doc as DocB,ParameterType.RequestBody);
//request.AddBody(doc as DocB);
request.AddFile("file", doc.File.FullName);
你可以看到我已经尝试使用request.AddBody(doc)
方法和request.AddParameter(name, object, type)
方法。两者都似乎未能正确发送数据,因为我从服务器收到的响应是缺少必需参数。使用Fiddler,我可以看到二进制数据,但从这些方法中看不到JSON数据。我查阅了RestSharp文档,但找不到任何允许我指定表单数据主体的特定“字段”名称为“data”的内容,这就是我遇到问题的原因。我在这里做错了什么?
编辑:通过使用Fiddler进行进一步检查,似乎它根本没有将我的JSON数据添加到HTTP请求的主体中。然而,在上载之前的断点处,我可以在参数列表(和文件列表)中看到所有内容被序列化了。当使用Fiddler进行检查时,我看到了文件二进制数据,然后是一个multipart/form-data边界,然后什么也没有。我会认为这就是我的数据应该出现的地方...