我遇到了使用RestSharp进行REST API的问题,我需要为我正在处理的项目使用Rest API。我需要发出的请求分为三部分:头部API密钥,要上传的文件以及一堆JSON格式的数据。 API要求使用“数据”的表单字段名称发送数据部分。出于某种原因,这是由于它在请求正文中命名字段“数据”而引起的问题。使用RestSharp发送HTTP POST多部分/表单数据字段
我的代码如下:
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文档,但我找不到任何允许为表单数据主体指定特定“字段”名称作为“数据”的任何内容,这是我认为会导致我遇到的问题。我在这里做错了什么?
编辑:进一步检查与提琴手它似乎并没有添加我的JSON数据的HTTP请求的主体。但是,在上传(执行命令)之前有一个断点,我可以看到在参数列表(和文件列表)中正确序列化的所有内容。在检查Fiddler时,我会看到文件二进制数据,然后是多部分/表单数据边界,然后什么也看不到。我会认为这是我的数据应该是...
我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –
对不起,回合!请阅读该文章,感谢编辑。 – JNYRanger
我也在寻找它的答案。 @JNYRanger你找到了答案吗?请让我知道你是否有解决方案。提前致谢。 –