C# 无法同时发布元数据和多部分。收到400个错误请求
我正试图从我的UWP应用程序上传一个文件,并在查询参数(下面的代码)中添加一些JSON数据。但是,我收到了一个错误的请求。不知道我错过了什么。但是,我能从邮递员那里得到同样的结果,得到200分 有人能帮忙吗C# 无法同时发布元数据和多部分。收到400个错误请求,c#,.net,uwp,C#,.net,Uwp,我正试图从我的UWP应用程序上传一个文件,并在查询参数(下面的代码)中添加一些JSON数据。但是,我收到了一个错误的请求。不知道我错过了什么。但是,我能从邮递员那里得到同样的结果,得到200分 有人能帮忙吗 string apiUrl = BuildUrl(url, apiContext); // req params which has the json string as key value pair and few other request parame
string apiUrl = BuildUrl(url, apiContext);
// req params which has the json string as key value pair and few other request parameters
Uri uri = BuildUriWithQueryParams(apiUrl, reqParams);
HttpRequestMessage reqMsg = new HttpRequestMessage(HttpMethod.Post, uri);
// File upload
if (files != null && files.Count > 0)
{
HttpMultipartFormDataContent formDataContent = new HttpMultipartFormDataContent();
foreach (StorageFile storageFile in files)
{
var inputStream = await storageFile.OpenAsync(FileAccessMode.Read);
HttpStreamContent httpStreamContent = new HttpStreamContent(inputStream);
formDataContent.Add(httpStreamContent, "doc", storageFile.Name);
}
reqMsg.Content = formDataContent;
}
var response = await HttpClient.SendRequestAsync(reqMsg);//.AsTask(cts.Token);
从查询参数中删除JSON req参数并将其添加到HttpStringContent解决了这个问题。下面提到了所需的更改
string apiUrl = BuildUrl(url, apiContext);
// req params which has the json string as key value pair and few other request parameters
// Uri uri = BuildUriWithQueryParams(apiUrl, reqParams);
UriBuilder uriBuilder = new UriBuilder(apiUrl);
HttpRequestMessage reqMsg = new HttpRequestMessage(HttpMethod.Post, uriBuilder .Uri);
HttpMultipartFormDataContent formDataContent = new HttpMultipartFormDataContent();
// File upload
if (files != null && files.Count > 0)
{
foreach (StorageFile storageFile in files)
{
var inputStream = await storageFile.OpenAsync(FileAccessMode.Read);
HttpStreamContent httpStreamContent = new HttpStreamContent(inputStream);
formDataContent.Add(httpStreamContent, "doc", storageFile.Name);
}
}
foreach (KeyValuePair<string, string> keyValuePair in reqParams)
formDataContent.Add(new HttpStringContent(keyValuePair.Value), keyValuePair.Key);
reqMsg.Content = formDataContent;
var response = await HttpClient.SendRequestAsync(reqMsg);//.AsTask(cts.Token);
string apirl=BuildUrl(url,apiContext);
//req参数,其中json字符串作为键值对,其他请求参数很少
//Uri=BuildUriWithQueryParams(APIRL,reqParams);
UriBuilder UriBuilder=新的UriBuilder(apiUrl);
HttpRequestMessage reqMsg=新的HttpRequestMessage(HttpMethod.Post,uriBuilder.Uri);
HttpMultipartFormDataContent formDataContent=新的HttpMultipartFormDataContent();
//文件上传
if(files!=null&&files.Count>0)
{
foreach(存储文件中的存储文件)
{
var inputStream=await-storageFile.OpenAsync(FileAccessMode.Read);
HttpStreamContent HttpStreamContent=新的HttpStreamContent(inputStream);
添加(httpStreamContent,“doc”,storageFile.Name);
}
}
foreach(reqParams中的KeyValuePair KeyValuePair)
添加(新的HttpStringContent(keyValuePair.Value)、keyValuePair.Key);
reqMsg.Content=formDataContent;
var response=wait HttpClient.SendRequestAsync(reqMsg);/。AsTask(cts.Token);
您可以通过标记自己的答案来结束此案例。这对其他人来说是清楚的。