我正在开发一个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);
}但上述情况会引起以下错误:
无法从“字符串”转换为“'System.Collections.Specialized.NameValueCollection‘” 'System.Net.WebClient.UploadValues(System.Uri,System.Collections.Specialized.NameValueCollection)‘的最佳重载方法匹配有一些无效的参数
所以,谁能在这个问题上放弃吗?
发布于 2016-07-28 13:01:50
错误很明显。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);发布于 2016-07-28 13:04:09
您需要定义一个新的NameValueCollection并将其传递给UploadValues
crudoutput = wc.UploadValues(uri, new NameValueCollection()
{
{ "INPUT_DATA", encodedJson }
});发布于 2016-07-28 13:05:00
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);
}https://stackoverflow.com/questions/38637138
复制相似问题