如何在json中发布数据?因为我一直收到错误消息,我没有通过参数。这是我的c#代码:
点击按钮:url = szAPIURL + url;
WebClient postWithParamsClient = new WebClient();
postWithParamsClient.UploadStringCompleted +=
new UploadStringCompletedEventHandler(postWithParamsClient_UploadStringCompleted);
postWithParamsClient.Headers["Content-Length"] = postdata.Length.ToString();
postWithParamsClient.UploadStringAsync(new Uri(url),
"POST",
"?username=name123&password=pass123");
private void postWithParamsClient_UploadStringCompleted(object sender,
UploadStringCompletedEventArgs e)
{
if (e.Error == null)
MessageBox.Show("WebClient: " + e.Result);
else
MessageBox.Show("WebClient: " + e.Error.Message);
}
这是我从电话中收到的内容:
[{"error_code":2,"error_messages":["You must specify login user name and password"],"tokenid":"","userid":0}]
这是原始的ajax api:
var msgData = {};
msgData ['username'] = szUserName;
msgData ['password'] = szEncryptedPassword;
$。AJAX({
url:szAPIURL +“Authenticate”,
类型:'POST',
//数据需要发布服务器。
// data:JSON.stringify({data:“test”}),
data:msgData,
/ * dataType:“jsonp”,* /
dataType:“json”,
答案 0 :(得分:1)
在做同样的事情时我需要做一些事情(尽管我使用的是UploadString而不是UploadStringAsync)。
首先,我需要将它添加到Headers集合中:
postWithParamsClient.Headers.Add("Content-Type", "application/json");
然后就像Jevgenij提到的那样,你必须将数据实际发送为JSON字符串,如下所示:
postWithParamsClient.UploadStringAsync(new Uri(url),
"POST",
"{ \"username\": \"name123\", \"password\": \"pass123\" }");
更新:如果您未传递第二个参数"POST"
,该方法会自动将其作为POST提交给您。
另外,另外,由于WebClient是IDisposable,我建议在使用语句中使用它,如:
using (postWithParamsClient = new WebClient()) { }
答案 1 :(得分:0)
不确定,但UploadStringAsync
的第三个参数是您要发送的实际数据。您可能想将"?username=name123&password=pass123"
放入网址?
这样的事情:
client.UploadStringAsync(new Uri(string.Format("{0}?{1}", url, "username=name123&password=pass123")), "POST", "<your data>");