【发布时间】:2020-08-18 21:33:08
【问题描述】:
我正在尝试使用 RestSharp 获得基本的登录功能。我有登录用户和密码作为我需要以某种方式转换的文本,因为服务器接受请求作为多部分/表单数据,我最初的尝试是这样的:
RestRequest request = new RestRequest(resource, Method.POST);
request.AddParameter("login", config.Login, ParameterType.RequestBody);
request.AddParameter("pass", config.Password, ParameterType.RequestBody);
只是发现我不能为请求正文添加两个参数,它会丢弃除第一个以外的所有参数。所以我的下一个尝试是构建 requestBody:
MultipartFormDataContent formData = new MultipartFormDataContent();
formData.Add(new StringContent(config.Login), "login");
formData.Add(new StringContent(config.Password), "pass");
request.AddBody(formData);
这也不起作用,只是返回了关闭的元素
最后我试图将它们作为 post 参数而不是 body 传递,考虑到它需要一种我猜想的形式,它似乎只是忽略了它:
request.AddParameter("login", JsonConvert.SerializeObject(config.Login), ParameterType.GetOrPost);
request.AddParameter("pass", JsonConvert.SerializeObject(config.Password), ParameterType.GetOrPost);
我正在寻找有关如何以某种方式将此文本转换为有效表单数据并将其发送的任何提示。使用 HTTPWebRequest 而不是 RestSharp 看起来更容易,但我确信这是可能的,这让我很困扰。
非常感谢!
【问题讨论】:
-
我建议使用像 WireShark 或 Fiddler 这样的数据包捕获工具,并将 RestSharp 发送的原始请求与工作请求进行比较。这将准确地告诉您发送的内容。
-
您不是以 Json 格式发送正文中的数据吗?
-
@Sh.Imran 不,我不能将数据作为 json 发送,它必须是 formdata 内容类型。
-
@Andy 我确实试过了,但没有成功,大概是因为它正在寻找多部分表单数据格式的两个字段
标签: c# rest multipartform-data dotnet-httpclient restsharp