Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法同时发布元数据和多部分。收到400个错误请求_C#_.net_Uwp - Fatal编程技术网

C# 无法同时发布元数据和多部分。收到400个错误请求

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

我正试图从我的UWP应用程序上传一个文件,并在查询参数(下面的代码)中添加一些JSON数据。但是,我收到了一个错误的请求。不知道我错过了什么。但是,我能从邮递员那里得到同样的结果,得到200分

有人能帮忙吗

        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);

您可以通过标记自己的答案来结束此案例。这对其他人来说是清楚的。