无法从';字符串';到';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)"具有一些无效自变量
有人能评论一下吗?
您需要定义一个新的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);