无法从';字符串';到';System.Collections.Specialized.NameVal

本文关键字:Collections Specialized NameVal System 字符串 | 更新日期: 2023-09-27 17:59:13

我正在开发一个asp.net mvc-4 web应用程序,我有以下方法将json对象上传到第三部分应用程序。其中我想将url标头设置为application/x-www-form-urlencoded:-

using (WebClient wc = new WebClient()) 
                {
                    string url = currentURL + "resources?AUTHTOKEN=" + pmtoken;
                    Uri uri = new Uri(url);
                    wc.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");
                    var encodedJson = WebUtility.UrlEncode(data);
                    crudoutput = wc.UploadValues(uri, "INPUT_DATA=" + encodedJson);
                }

但是上面提到了以下错误:-

无法从"string"转换为'System.Collections.Specialized.NameValueCollection'

最佳重载方法匹配'System.Net.WebClient.UploadValues(System.Uri,System.Collections.Specialized.NameValueCollection)"具有一些无效自变量

有人能评论一下吗?

无法从';字符串';到';System.Collections.Specialized.NameVal

您需要定义一个新的NameValueCollection并将其传递给UploadValues:

crudoutput = wc.UploadValues(uri, new NameValueCollection()
{
    { "INPUT_DATA", encodedJson }
});

WebClient UploadValues方法需要NameValueCollection而不是string作为参数

所以你可以试试这个:-

    using (WebClient wc = new WebClient()) 
     {
         string url = currentURL + "resources?AUTHTOKEN=" + pmtoken;
         Uri uri = new Uri(url);       
         wc.Headers.Add(HttpRequestHeader.ContentType, "application/x-www-form-urlencoded");
         var encodedJson = WebUtility.UrlEncode(data);
         NameValueCollection myNameValueCollection = new NameValueCollection();
         myNameValueCollection.Add("INPUT_DATA",encodedJson);
         crudoutput = wc.UploadValues(uri, myNameValueCollection);
     }

错误非常明显。UploadValues采用NameValueCollection而不是字符串https://msdn.microsoft.com/en-us/library/9w7b4fz7(v=vs.110).aspx

你的代码应该是

var nvc = new NameValueCollection();
nvc.Add("INPUT_DATA", encodedJson);
crudoutput = wc.UploadValues(uri, nvc);

更新

您可以尝试UploadString:https://msdn.microsoft.com/en-us/library/0645045y(v=vs.110).aspx

crudoutput = wc.UploadString(uri, "INPUT_DATA=" + encodedJson);
相关文章: