2013-03-22 68 views
0

如何在json中发布数据?当我不断收到错误消息,我没有通过参数。这是我的C#代码:在restful json web服务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;

$阿贾克斯({
网址:szAPIURL + “认证”,
类型: 'POST',
//数据需要发布TP服务器
//数据:JSON.stringify({数据: “测试”}),
数据:MSGDATA,
/*数据类型: “JSONP”,*/
数据类型: “JSON”,

+0

如果它是一个宁静的JSON服务可能在被期待的用户名和密码,JSON而不是在url中 – 2013-03-22 16:37:14

回答

0

不知道,但UploadStringAsync第三个参数是实际数据,你想发送。可能你想放哟你的网址是"?username=name123&password=pass123"

事情是这样的:

client.UploadStringAsync(new Uri(string.Format("{0}?{1}", url, "username=name123&password=pass123")), "POST", "<your data>"); 
+0

我想用json web服务发送数据。 – weihan1394 2013-03-23 01:58:55

1

有这样做同样的事情时(虽然我使用UploadString而不是UploadStringAsync)我需要做一些事情。

首先,我需要把它添加到页眉集合:

postWithParamsClient.Headers.Add("Content-Type", "application/json"); 

然后,像Jevgenij提到,你必须实际发送数据作为JSON字符串,像这样:

postWithParamsClient.UploadStringAsync(new Uri(url), 
            "POST", 
            "{ \"username\": \"name123\", \"password\": \"pass123\" }"); 

更新:如果您未传递第二个参数"POST",该方法将自动将其作为POST提交给您。

而且,顺便说一句,因为WebClient的是IDisposable的,我建议你使用它在using语句,如:

using (postWithParamsClient = new WebClient()) { } 
+0

这就是我现在所拥有的: – weihan1394 2013-03-23 01:40:01

+0

string url =“Authenticate”; url = szAPIURL + url; WebClient postWithParamsClient = new WebClient(); 012WpostWithParamsClient.UploadStringCompleted + = new UploadStringCompletedEventHandler(postWithParamsClient_UploadStringCompleted); postWithParamsClient。UploadStringAsync(new Uri(url),“POST”,“{\”username \“:\”name123 \“,\”password \“:\”pass123 \“}”); – weihan1394 2013-03-23 01:40:30

+0

但它仍然给我同样的问题。 – weihan1394 2013-03-23 01:41:21