首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从“字符串”转换为“'System.Collections.Specialized.NameValueCollection‘”

无法从“字符串”转换为“'System.Collections.Specialized.NameValueCollection‘”
EN

Stack Overflow用户
提问于 2016-07-28 12:59:59
回答 3查看 2.2K关注 0票数 0

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

代码语言:javascript
复制
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);
                }

但上述情况会引起以下错误:

无法从“字符串”转换为“'System.Collections.Specialized.NameValueCollection‘” 'System.Net.WebClient.UploadValues(System.Uri,System.Collections.Specialized.NameValueCollection)‘的最佳重载方法匹配有一些无效的参数

所以,谁能在这个问题上放弃吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-28 13:01:50

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

你的代码应该是

代码语言:javascript
复制
var nvc = new NameValueCollection();

nvc.Add("INPUT_DATA", encodedJson);

crudoutput = wc.UploadValues(uri, nvc);

更新

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

代码语言:javascript
复制
crudoutput = wc.UploadString(uri, "INPUT_DATA=" + encodedJson);
票数 2
EN

Stack Overflow用户

发布于 2016-07-28 13:04:09

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

代码语言:javascript
复制
crudoutput = wc.UploadValues(uri, new NameValueCollection()
{
    { "INPUT_DATA", encodedJson }
});
票数 3
EN

Stack Overflow用户

发布于 2016-07-28 13:05:00

WebClient UploadValues方法将NameValueCollection而不是string作为参数。

所以你可以试试这个

代码语言:javascript
复制
    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);
     }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38637138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档